仅输入列表中显示的文件名

时间:2011-11-30 11:53:59

标签: r

我正在尝试从数据框中提取网站列表,然后从文件夹中加载与这些网站名称匹配的.csv文件。

我找到了多种方法来加载给定目录中的所有文件,但却无法找到任何适合回答我问题的内容。正如我在其他示例中看到的那样,没有用于对文件名进行子集化的常用功能。有超过150个站点,所以我不想每次都加载所有的.csv文件。

有没有办法在文件夹中选择与列表中的名称匹配的文件子集,并且只加载这些文件?加载这些文件后,我需要对每个文件执行相同的分析,因此我正在寻找一种加载这些文件的方法,以使这种进一步的分析尽可能高效。

非常感谢任何帮助。

    trials<-read.csv("trial_associations.csv")
    trials
    site.name    red    blue    green    yellow
    upper.hill   yes     no      yes       no
    lower.hill   yes     yes     no        yes
    upper.lake   no      no      yes       yes
    lower.lake   no      yes     yes       no

    site<-trials[trials$red=="yes",]
    sitelist<-data.frame(site[,1])

站点列表的例子

    site.name
    upper.hill
    lower.hill
    etc.

sitenames文件夹中的示例文件 - 每个文件有四列带标题和〜5800行

    a     b     c     d
    yes   no    no    yes
    no    yes   no    no
    yes   yes   yes   yes
    no    no    yes   no

sitenames文件夹中的文件名

    upper.hill.csv
    lower.hill.csv
    lower.lake.csv
    upper.lake.csv
    etc

然后我需要使用sitelist中的名称从工作目录中的sitenames文件夹加载.csv文件。

我用过

    list.files(dir)

获取目录中的文件列表。但我不确定如何利用站点列表中的名称来访问sitenames文件夹中的某些文件。

我希望这会让事情变得更加清晰,谢谢

1 个答案:

答案 0 :(得分:2)

您可能用于获取所有文件的代码与获取某些文件所需的代码非常相似。通常,要获取导演中的所有文件,请使用list.files('myDir')或其他类似文件。只需运行该部分代码,看看结果如何。你会看到它只是一个包含所有文件名称的字符向量。

一旦你明白这很容易。您可以通过另一种方式获取角色向量,或者只是将此角色向量子集化。例如,如果您想要的文件列表位于名为“文件列表”的文件中,那么您可以使用scan获取名称。

fList <- scan('file list')

现在你可以在......

中阅读所有这些文件
dList <- lapply(fList, read.table)

......或类似的东西。您已经拥有了可以适应的代码。如果您只想要所有文件的randome子集,那么这样就足够了。

fList <- list.files(`myDir')  #or leave out 'myDir' for working directory - this gets all files names
subfList <- sample(fList, 4)  #just get a random 4 files

也许这会让你开始。很难推荐更精确的东西。