循环数据帧并使用R在循环内的每个数据帧中选择一列

时间:2013-10-09 14:26:06

标签: r loops dataframe

我想循环一个数据框并从数据框中选择一个单独的列,为此我使用下面的代码,但它给了我一个错误。有人可以指导我在这段代码中应该纠正什么?

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 个答案:

答案 0 :(得分:2)

你可以在没有for循环的情况下完成这个:

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的第一列,而不仅仅是第一列。