r - dplyr 选择助手的交集
问题描述
我想通过参数将 data.frame 的一组列指定为dplyr
函数。但我想选择我的选择的交集。xxxx_at
.vars
下面是一个示例:一个 data.frame ,其名称为 form [abc][abc][abc]
。
df <- structure(list(aaa = 1L, baa = 2L, caa = 3L, aba = 4L, bba = 5L,
cba = 6L, aca = 7L, bca = 8L, cca = 9L, aab = 10L, bab = 11L,
cab = 12L, abb = 13L, bbb = 14L, cbb = 15L, acb = 16L, bcb = 17L,
ccb = 18L, aac = 19L, bac = 20L, cac = 21L, abc = 22L, bbc = 23L,
cbc = 24L, acc = 25L, bcc = 26L, ccc = 27L), class = "data.frame", row.names = c(NA,
-1L))
# names(df)
# [1] "aaa" "baa" "caa" "aba" "bba" "cba" "aca" "bca" "cca" "aab" "bab" "cab" "abb" "bbb" "cbb" "acb" "bcb"
# [18] "ccb" "aac" "bac" "cac" "abc" "bbc" "cbc" "acc" "bcc" "ccc"
我想一口气选择以开头"a"
和结尾的列"c"
。为了将解决方案与mutate_at
, group_by_at
,一起使用and_so_on_at
,它需要适合单个调用vars
.
在 in 中使用多个条件vars
需要它们的并集而不是交集。
df %>%
select_at(vars(starts_with("a"), end_with("c"))) %>%
names
# [1] "aaa" "aba" "aca" "aab" "abb" "acb" "aac" "abc" "acc" "bac" "cac" "bbc" "cbc" "bcc" "ccc"
我试图得到:
[1] "aac" "abc" "acc"
我有一种感觉all_vars
是相关的,但我不知道如何使用它。
PS:我知道我可以使用select
而不是,select_at
但我试图笼统。我的实际用例是mutate_at
.
解决方案
grep("^a.*c$", names(df), value = TRUE)
#[1] "aac" "abc" "acc"
如果你坚持使用dplyr
df %>%
select_at(vars(matches("^a.*c$"))) %>%
names
#[1] "aac" "abc" "acc"
推荐阅读
- mysql - Reactjs - 日期类型字段不更新 DATE 类型的 MYSQL 日期列
- c - 我错过了哪个测试用例?
- postgresql - 使用带有 postgresql 的 docker 卷来验证它是否保存在主机文件系统上
- javascript - 执行代理请求时出现“无法建立隧道套接字”错误
- highcharts - Highchart去除小数位
- spring - 错误通道在拆分器/聚合器中不起作用(异步调用)
- python - 当相同的 POST 在 Postman 中正常工作时,如何解决 Python 请求 POST 失败?
- java - 我的应用程序不检查 location.addOnCompleteListener() 并崩溃
- node.js - 如何从模块中获取日期到 index.js
- python - 设置感知器的阈值