R:在多个计算机目录中查找多个列表

时间:2016-06-10 12:19:23

标签: r list assign

我想知道R是否能做到这一点:

我在C:/ Names中的C:驱动器上有几十个文件夹。为简单起见,说只有两个叫做“Ben”和“Dave”。这些文件夹中的每一个都有几个文件。

我希望R为每个文件夹创建这些文件的列表,然后为列表分配该文件夹的名称。所以结果会给我两个单独的对象:

Ben:

[1] "File1.csv" "File2.csv"  

Dave:
 [1] "File3.csv" "File4.csv

我觉得我必须循环才能这样做,但凭借我有限的知识,不确定如何。我想对C:/ Names中的所有文件夹执行此操作,而不仅仅是示例中的两个文件夹。

2 个答案:

答案 0 :(得分:1)

这是你想要做的吗?

names <- "C:/Names"
folders <- list.dirs(path = names, full.names = F, recursive = F)
for (foldersA in folders){
  assign(foldersA, list.files(paste(names, foldersA, sep="/")))
}

答案 1 :(得分:1)

通常,创建具有任意名称的对象是个坏主意,因为其中一个子文件夹的名称对于R中的对象是合法的,或者覆盖了现有的对象。更多R-ish方法是使用以下方法创建单个列表:

input.names <- lapply(list.dirs("c:\\Names"),list.files)

然后您可以遍历列表中的元素以进行进一步处理,也可以将单个元素作为input.names$Daveinput.names[["Dave"]]访问。