r - 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
,但是我在各种情况下都遇到了这个问题,并且想知道是否有一个通用的解决方案。
解决方案
也许你会喜欢这个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"
推荐阅读
- python - 在 Geopandas 地图上绘制六角网格
- amazon-web-services - OSError:[Errno 28] AWS EC2 实例中的设备上没有剩余空间
- python-3.x - 如何告诉 Django 模型只有一个或其他字段不能为空?
- node.js - Debug HTTP request in node.js Express using PhpStorm
- linux - How to do ,,Checking your browser before accessing..."?
- python - join consecutive lines with python
- azure - Need help on Azure policy for Azure Iot Hub
- javascript - Custom HTML tag on Load in GTM with Javascript
- laravel - 自定义 Laravel 8 Passport 方法
- vue.js - 当我使用相同的用户名时如何不使用:key=”$route.path”