我定期在索引中使用 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
的情况下使用模式参数,但我在各种上下文中都遇到了这个问题,并且想知道是否有通用的解决方案。
最佳答案
也许您会喜欢 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"
关于R - 在 grep 中暗示 x 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50391471/