R:通过在多个计算机目录中查找来命名多个列表

R: Name multiple lists from looking within multiple computer directories

不知道R能不能做到:

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

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

Ben:

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

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

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

这是您想要做的吗?

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="/")))
}

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

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

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