从数据框列表中选择R中的特定列

时间:2017-08-18 03:29:42

标签: r multiple-columns lapply

我有多个CSV文件说2,我想从每个文件中提取特定列。

filenames <- list.files("path")
for(iter in 1:length(filenames)){
  print(filenames[iter])
  my_csv=read.csv(filenames[iter])

其中,csv1和csv2分别包含列a1,a2,a3,a4和b1,b2,b3,b4。现在我想从csv1获取列a1,从csv2获取b2,其中csv number(csv 1 (本例中为1)与coulmn名称匹配(在本例中为a1))。同样来自csv2的b2(csv 2 与colummn name b2匹配。

1 个答案:

答案 0 :(得分:0)

要阅读csv文件,我强烈建议您使用fread包中的data.tablehere更多内容)。

library(data.table)
fileCSV <- list.files(pattern = "csv$")
# This function extracts i column from the csv file
# It doesn't look into colnames
getCSVcolumn <- function(FILE) {
    i <- gsub("csv|\\.", "", FILE)
    foo <- fread(FILE)
    foo[, paste0("V", i), with = FALSE]
}
res <- sapply(fileCSV, getCSVcolumn)
res <- do.call("cbind", res)
colnames(res) <- gsub("\\..*","", colnames(res))