【问题标题】:How to get R to read in files from multiple subdirectories under one large directory?如何让 R 从一个大目录下的多个子目录中读取文件?
【发布时间】:2015-05-05 13:44:39
【问题描述】:

我正在尝试开始编写我的第一个 R 代码。我已经搜索过这个答案,但我不太确定我找到的是我正在寻找的东西。我知道如何让 R 读取同一子目录中的多个文件,但我不太确定如何让它从多个子目录中读取一个特定文件。

例如,我有一个包含一系列轨迹复制的主目录,每个复制都在它自己的子目录中。细分如下;

“主目录”->“子目录1”->“复制目录1-6”

我希望 R 从每个“ReplicateDir”中提取“RMSD.dat”表(文件)以进行读取。所有的 RMSD.dat 文件都有相同的名称,它们只是在不同的目录中,当然包含不同的数据。

我可以将所有文件移动到一个文件夹中,但这似乎不是解决此问题的最有效方法。

如果有人能启发我,我将不胜感激。

谢谢

【问题讨论】:

  • list.files("Main Dir", recursive=T) ?
  • pattern = "^RMSD\\.dat$"

标签: r


【解决方案1】:

这应该可以,当然将My Dir 更改为您的目录

dat.files  <- list.files(path="Main Dir",
                                recursive=T,
                                pattern="RMSD.dat"
                                ,full.names=T)

如果要将文件读入数据集中,可以使用以下函数:

readDatFile <- function(f) {
  dat.fl <- read.csv(f) # You may have to change read.csv to match your data type
}

并应用于文件列表:

data.files <- sapply(dat.files, readDatFile)

【讨论】:

  • 这很好用!非常感谢。但是由于这会生成一长串文件,你认为这将允许我“进入”列表中的每个文件和每个文件的子集 1 列来进行块平均吗?
  • @D.A.Ragland 我很高兴得知它对您有用。原则上是的,有不同的方法从列表中对元素进行子集化(查看this discussion),或者您可能更喜欢在循环中跳过列表并将子集分别应用于每个元素或将元素合并到一个数据帧中。很大程度上取决于您的数据的性质,您希望如何使用它等。SO 上有大量解决方案可以解决与列表相关的许多问题,值得探索,您可以随时询问。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-02
  • 1970-01-01
相关资源
最近更新 更多