gpt4 book ai didi

r - dplyr 选择助手的交集

转载 作者:行者123 更新时间:2023-12-01 09:44:03 25 4
gpt4 key购买 nike

我想通过 .vars 参数为 dplyrxxxx_at 函数指定 data.frame 的列选择。但我想选择我的选择的交集。

这是一个例子:一个data.frame,其名称格式为[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_atgroup_by_atand_so_on_at 一起使用,它需要适合对 vars 的单个调用>.

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"

关于r - dplyr 选择助手的交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53224074/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com