使用向量将多个csv文件读入r

时间:2014-10-14 12:47:48

标签: r csv vector user-defined-functions

我对R很新,并试图找出如何使用向量来读取多个csv文件。我想创建一个包含我想要读入的文件的向量,一个带有我将存储数据的数据帧名称的向量,以及一个使用这两个文件来处理多个文件的函数。这是我尝试的代码:

filevar<-c("study_data_raw.csv","study_data_cleaned.csv")
dfs<-c("study_data_raw","study_data_cleaned")
myfunc<-function(x,y) {
  y<- read.csv(file.path("C:/study_data",x))
  }
myfunc(filevar,dfs)

我收到以下错误&#34;文件错误(文件,&#34; rt&#34;):无效&#39;描述&#39;参数&#34;

我未经训练的眼睛无法找到合乎逻辑的问题,并欢迎更有经验的程序员提供任何指导。

1 个答案:

答案 0 :(得分:0)

虽然我不想告诉R新手使用循​​环,但这是你最好的选择。

filevar<-c("study_data_raw.csv","study_data_cleaned.csv")
fileData <- list()
for(fileNum in 1:length(fileVar))
{
  fileData[[fileNum]] <- read.csv(file = paste0("C:/study_data/",filevar[fileNum]))
}

(请注意,apply函数中包含循环,因此它们不会更快,并且它们的可读性更低/更难调试)

我建议使用此方法,因为它允许您以数字方式引用文件。如果您希望将它们命名,请执行此操作

filevar<-c("study_data_raw.csv","study_data_cleaned.csv")
dfs<-c("study_data_raw","study_data_cleaned")
for(fileNum in 1:length(fileVar))
{
  assign(dfs[fileNum],read.csv(file = paste0("C:/study_data/",filevar[fileNum])))
}

奖励积分: 同样对于任何R用户,我建议开始使用管道,因为它可以进一步提高可读性。

library(magrittr) # or install.packages("magrittr") first
library(dplyr) # or install.packages("dplyr") first

filevar<-c("study_data_raw.csv","study_data_cleaned.csv")
dfs<-c("study_data_raw","study_data_cleaned")
for(fileNum in 1:length(fileVar))
{
  paste0("C:/study_data/",filevar[fileNum]) %>%
  readcsv() %>%
  assign(dfs[fileNum])
}