繁体   English   中英

根据路径列表将数据文件导入到列表中

[英]Import data files in to a list based on a list of paths

我有大量按类别组织的 .csv 数据文件。 我想将它们导入到每个类别的列表中。

为此,我为每个类别创建了一个路径文件列表:

path_list <- list(a = c("path1","path2"), b= c("path3", "path4","path5"))

然后我想将“.csv”文件读入一个与path_list具有相同结构的新列表:

data_list <- vector("list", length(path_list))

names(data_list) <- names(path_list)

for(i in 1:length(data_list)) { 
  for (j in 1:3)) {

  data_list[[i]] <- read.csv(path_list[[i]][[j]], header=T, na.strings = "", stringsAsFactors = F)

  print (i)

  }
}

这适用于path_list$a的前两个元素,但随后出现错误:

Error in path_list[[i]][[j]] : subscript out of bounds

我知道是因为j只有在两个元素在实际j循环1:3 有没有办法使每个列表元素的j动态化?

最终结果应如下所示:

data_list
$a
[1] "datafile1" "datafile2"

$b
[1] "datafile3" "datafile4" "datafile5"

它是path_list因为并非path_list所有元素都是长度为 3 的向量。 以下工作:

data_list <- setNames(vector("list", length(path_list)), names(path_list))
l <- lengths(path_list)    ## length of each vector

for(i in 1:length(data_list)) {
  tmp <- vector("list", l[i])
  for (j in 1:l[i])) {
     tmp[[j]] <- read.csv(path_list[[i]][j], header=TRUE, na.strings = "", stringsAsFactors = FALSE)
     }
  data_list[[i]] <- tmp
  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM