我有多个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匹配。
答案 0 :(得分:0)
要阅读csv文件,我强烈建议您使用fread
包中的data.table
(here更多内容)。
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))