2013-10-09 44 views
-1

循環內的數據幀中選擇一個列我想通過數據幀循環,然後從該數據幀的單獨的列,對於此我使用下面的代碼,但它給了我一個錯誤。有人能指導我在這段代碼中應該糾正什麼嗎?遍歷數據幀並且在每個,使用R

for (i in 1:3) { 
    cur_file <- paste(i,".csv",sep="") 
    curfile <- list.files(pattern = cur_file) 
    rd_data[i] <- read.csv(curfile, header=F,sep="\t") 
    col1 <- rd_data[i,1] # select the first column in the "1st" data frame 
    n_val[i] <- rd_data[i,2] # select the second column in the each of "ith" data frame 
} 
+1

您所需的輸出是我也不清楚,但是'rd_data [1,1]'應該是'rd_data [,1]'和'rd_data [I,2]'應該是'rd_data [,2]'如果你想要做你的評論說的。 – JT85

+0

@ JT85,我改變了他們。我得到的線誤差,n_val [I] < - rd_data [1,2] – Amm

+0

基本上,所有的數據幀,如rd_data [I],rd_data [2]和rd_data [3]包含由不同的.csv數據文件。我想將第二列分配給新的數據幀n_vals。我拿到的時候我嘗試這樣做是錯誤,「在n_val [I] <錯誤 - rd_data [,2]:對象n_val「未找到」 – Amm

回答

2

您可以循環完全做到這一點沒有:

files <- list.files(pattern='*.csv') 

dat <- lapply(files, read.csv, header=FALSE, sep='\t') # apply read.csv to each element of files 

col_1_list <- lapply(dat, '[', 1) # use the [ function, see ?"[" for more info. 
n_val_list <- lapply(dat, '[', 2) 

此外,您的鱈魚:

col1 <- rd_data[i,1] # select the first column in the "1st" data frame 

將選擇每個data.frame的第一列不只是第一個。

+0

我需要將數據存儲在每個文件的一個單獨的數據幀,因此我將它們分配在循環中。 – Amm

+0

這樣做。每個data.frame存儲爲列表'dat'的一個元素。 – Justin

+0

除此之外,我剛剛閱讀帶有我需要的模板名稱的.csv文件,因此我在使用list.files的循環內部使用它。我想爲n_vals提供單獨的數據幀,因爲我稍後使用此數據幀在代碼中進行進一步處理。希望這是更清楚 – Amm