【问题标题】:Get list of files in a directory without subdirectory names获取目录中没有子目录名称的文件列表
【发布时间】:2019-09-04 00:58:40
【问题描述】:

基本 R 函数 list.files 列出给定路径中的所有文件。

默认

aa <- list.files(path = ".")

返回. 中所有内容的名称向量,例如:

 [1] "dir1" "file1.R"

我只希望它返回"file1.R"


一个笨拙的解决方案是如果我改为调用

bb <- list.files(path = ".", include.dirs = FALSE, recursive = TRUE)

我明白了

[1] "dir1/file2.R" "file1.R"

所以我可以通过调用得到我想要的东西

intersect(aa, bb)

[1] "file1.R"

但是当我觉得list.files 可能可以直接给我这个时,创建两个对象并将它们相交似乎很愚蠢,我只是不知道如何。

你知道吗?

【问题讨论】:

  • 使用pattern ? list.files(pattern = "\\.R$")
  • 酷 - 如果所有文件都是 .R,则可以使用。也想知道是否有更通用的解决方案
  • stackoverflow.com/questions/22069095/… 我想这就是你想要的。
  • 是的,对 - 很明显没有直接的方法来获取文件 ex dirs。古怪!
  • 虽然我不同意它的古怪之处,但文档 (?list.files) 明确指出 include.dirs “它们始终处于非递归状态” 文件列表。

标签: r


【解决方案1】:

使用list.files(path = ".") 会显示您当前工作的文件夹中的文件。

你是对的。使用list.files()函数可以提供有关此文件夹中文件的附加信息。但是使用这个函数获取额外的信息需要了解一些关于正则表达式的知识。

使用带有元字符$list.files() 函数将返回此文件夹中的所有这些.r 文件。如果还有其他以字母 r 结尾的文件,那么这些文件也会被返回。

以下将返回您想要的那些 .r 文件,这应该可以回答您的问题。

list.files(pattern = "r$")

【讨论】:

  • 这也会选择一个名为my_folder的目录。我不认为正则表达式是解决这个问题的通用方法。
  • 谢谢@Gray,是的,正如 Ronak Shah 在上面的评论中所建议的那样。当且仅当该文件夹仅包含 R 文件时会很好,但正如我在回复 Ronak 时指出的那样,我想知道是否存在更一般的东西
猜你喜欢
  • 2019-12-10
  • 1970-01-01
  • 2011-02-11
  • 2014-10-04
  • 2017-03-31
  • 2011-12-08
  • 2015-09-12
  • 2014-05-20
  • 1970-01-01
相关资源
最近更新 更多