Я хочу указать выбор столбцов элемента data.frame для dplyr
xxxx_at
функций с помощью аргумента .vars
. Но я хочу выбрать пересечение моих выборов.
Вот пример: 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_at
, group_by_at
, and_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
.