Я хочу ссылаться на неизвестное имя столбца внутри summarise
. Стандартные функции оценки, введенные в dplyr 0.3
, позволяют ссылаться на имена столбцов с использованием переменных, но это не работает, когда вы вызываете функцию base
R внутри, например. a summarise
.
library(dplyr)
key <- "v3"
val <- "v2"
drp <- "v1"
df <- data_frame(v1 = 1:5, v2 = 6:10, v3 = c(rep("A", 3), rep("B", 2)))
df выглядит так:
> df
Source: local data frame [5 x 3]
v1 v2 v3
1 1 6 A
2 2 7 A
3 3 8 A
4 4 9 B
5 5 10 B
Я хочу удалить v1, группу по v3 и суммировать v2 для каждой группы:
df %>% select(-matches(drp)) %>% group_by_(key) %>% summarise_(sum(val, na.rm = TRUE))
Error in sum(val, na.rm = TRUE) : invalid 'type' (character) of argument
Версия NSE select()
отлично работает, так как она может соответствовать символьной строке. Версия SE group_by()
отлично работает, поскольку теперь она может принимать переменные в качестве аргументов и оценивать их. Тем не менее, я не нашел способа добиться аналогичных результатов при использовании базовых функций R внутри функций dplyr
.
Вещи, которые не работают:
df %>% group_by_(key) %>% summarise_(sum(get(val), na.rm = TRUE))
Error in get(val) : object 'v2' not found
df %>% group_by_(key) %>% summarise_(sum(eval(as.symbol(val)), na.rm = TRUE))
Error in eval(expr, envir, enclos) : object 'v2' not found
Я проверил несколько связанных questions, но ни одно из предлагаемых решений для меня пока не работает.