2012-07-13 23 views
2

我有以下結構的txt文件:在R中讀表?

NAME  DATA1 DATA2 
a  10  1,2,3 
b  6  8,9 
c  20  5,6,7 ,8 

的第一行代表了報頭和所述數據由製表符分離。我需要將DATA1的元素放在列表或向量中,以便我可以逐個遍歷元素。

此外,我需要提取的DATA2元件爲每個NAME和把他們在一個列表中,這樣我可以遍歷然後單獨,例如獲取NAME b的元素8,9並放入列表中。 (請注意,第三條記錄在7和逗號之間的DATA2列表中有一個空格)。

我怎麼能做到這兩個操作?我知道我可以使用read.table$來訪問各個元素,但我被卡住了。

info<-read.table("table1", header=FALSE,sep="\t") 
namelist<-list(info$NAME) 
+1

當你在這樣的數據讀取,你就會有一個data.frame其中NAME和DATA2是因子,DATA1是數字。您可以通過在','處分割,將DATA2按摩到另一個列表中。請添加更多的上下文,也許有更好的方式來做任何你正在努力的事情。 – 2012-07-13 12:58:47

回答

6

運行這個演示,並期待在nd1d2結構 - 這應該可以幫助您去:

df = read.table(text="NAME\tDATA1\tDATA2 
a\t10\t1,2,3 
b\t6\t8,9 
c\t20\t5,6,7 ,8", 
       header= TRUE, 
       stringsAsFactors=FALSE, 
       sep='\t') 

n = df$NAME 
d1 = df$DATA1 
d2 = lapply(strsplit(df$DATA2, ","), 
      as.numeric) 
names(d2) = n 

d2['b'][1] # access first element in list named 'b' 

lapply(d2, FUN=mean) # mean of all rows in d2 
+0

感謝您的答案@gauden,我遇到的一個問題是我的DATA2的格式是「1,2,3」,「8,9」,「5,6,7,8」,所以當我執行lapply(strsplit ...)由於「」我得到一個錯誤,我怎麼能擺脫那個錯誤?謝謝 – Layla 2012-07-13 14:49:25

+0

@Manolo,我編輯過的代碼包括使用製表符分隔符解析記錄,這樣可以避免'DATA2'中的空格問題導致您發現的錯誤。 – gauden 2012-07-13 17:58:38