2010-08-15 71 views
1

我有一個R關於存儲數據的新手問題。R:如何將不同的文件讀入雙暗矢量?

我有3個不同的文件,每個文件都包含一列。現在我想將它們讀入一個結構體x中,以便x[1]是第一個文件的列,x[2]是第二個文件的列等等。所以x將是一個雙暗向量。

我嘗試這樣做,但它希望x[f]是一個單一的數字,而不是整個向量:

files <- c("dir1/data.txt", "dir2b/data.txt", "dir3/data2.txt") 
for(f in 1:length(files)) { 
    x[f] <- scan(files[f]) 
} 

我該如何解決這個問題?

回答

2

列表應該有所幫助。在循環之前嘗試

x <- vector(mode="list",length=3) 

,然後指定爲

x[[f]] <- read.table(files[f]) 

我會建議不要scan;你應該有更好的運氣read.table()和它的堂兄弟read.csv

填好x後,您可以將其合併爲例如經由

y <- do.call(cbind, x) 

施加cbind - 一個由列組合器 - 到列表x的所有元素。

+0

謝謝!我忘了提及不同文件中的列有不同的長度。所以'do.call(cbind,x)'命令不起作用。沒有它,我似乎必須以'x [[1]] $ V1'等方式訪問第一列。 – Frank 2010-08-15 21:27:59

+1

重新設置不同的長度:您可能需要傳遞一次以獲得最大長度,並且讀入第二遍填充。這也可以讓你只返回單個列 - 參見'help(drop)'。 – 2010-08-15 22:05:38