首页 > 解决方案 > R - 在 grep 中隐含 x 对象

问题描述

我经常在索引中使用 grep 过滤字符向量。为此,我通常在索引中重复索引对象的名称。

paths <- c("Resources/ctrl1.txt", "Resources/ctrl2.txt", 
           "Resources/trt1.txt", "Resources/trt2.txt")

paths.ctrl <- paths[grep("ctrl", paths)]

我想知道,是否有办法暗示x(寻找模式的对象),所以我不需要再次明确命名它。当尚未分配对象并且过滤已经在分配期间发生时,这将特别方便。

代替:

dir <- "Resources/"
paths.ctrl <- paste0(dir, list.files(dir, recursive=T)[grep("ctrl", list.files(dir, recursive=T)))

我想要类似的东西:

paths.ctrl <- paste0(dir, list.files(dir, recursive=T)[grep("ctrl", x)]

我知道我可以在 的情况下使用模式参数list.files,但是我在各种情况下都遇到了这个问题,并且想知道是否有一个通用的解决方案。

标签: r

解决方案


也许你会喜欢这个value = TRUE选项,如

paths.ctrl <- paste0(dir, grep("ctrl", list.files(dir, recursive = TRUE), value = TRUE))

例如,

c("AA", "BB", "BA")[grep("B", c("AA", "BB", "BA"))]
# [1] "BB" "BA"

grep("B", c("AA", "BB", "BA"), value = TRUE) # no repetitions
# [1] "BB" "BA"

推荐阅读