我有一堆CSV文件,我想对每个文件中的数据执行相同的分析(在R中)。首先,我假定每个文件都必须读入R中(而不是在CSV上运行函数并提供输出,如sed脚本)。从R中的多个.csv文件读取,处理和导出分析结果
将多个CSV文件输入到R中以便执行分析然后为每个输入输出单独结果的最佳方法是什么?
感谢(顺便说一句,我为完整的R新手)
我有一堆CSV文件,我想对每个文件中的数据执行相同的分析(在R中)。首先,我假定每个文件都必须读入R中(而不是在CSV上运行函数并提供输出,如sed脚本)。从R中的多个.csv文件读取,处理和导出分析结果
将多个CSV文件输入到R中以便执行分析然后为每个输入输出单独结果的最佳方法是什么?
感谢(顺便说一句,我为完整的R新手)
您可以通过将所有CSV文件在同一目录下试试下面的代码。
names = list.files(pattern="*.csv") %csv file names
for(i in 1:length(names)){ assign(names[i],read.csv(names[i],skip=1, header=TRUE))}
希望这有助于!
您可以去肖恩的选择,但它会导致几个问题:
更好的做法可能与lapply()
。
# List files
filelist <- list.files(pattern = "*.csv")
# Now we use lapply to perform a set of operations
# on each entry in the list of filenames.
to_dispose_of <- lapply(filelist, function(x) {
# Read in the file specified by 'x' - an entry in filelist
data.df <- read.csv(x, skip = 1, header = TRUE)
# Store the filename, minus .csv. This will be important later.
filename <- substr(x = x, start = 1, stop = (nchar(x)-4))
# Your analysis work goes here. You only have to write it out once
# to perform it on each individual file.
...
# Eventually you'll end up with a data frame or a vector of analysis
# to write out. Great! Since you've kept the value of x around,
# you can do that trivially
write.table(x = data_to_output,
file = paste0(filename, "_analysis.csv"),
sep = ",")
})
并完成。
我会建议'for'循环:) – Jealie
我会建议一个函数,并且可能会从'for'循环中调用它;-) – janos