我看到很多类似的问题,但只解决了我的问题的一部分。我正在使用具有标准评估功能的dplyr来适应变量名称。这对于管道中的filter_和group_by_很好用。然而,对于summarize,我不能为我正在汇总的度量指定变量名称。下面的示例将使其更加清晰。
library(dplyr)
library(lazyeval)
# create data
a <- data.frame(
x = c(2010, 2010, 2011, 2011, 2011),
y_zm = c(rep(10, 5)),
y_r2 = c(rep(20, 5)))
# define variable names
tag <- "2011"
metric <- "y"
run1 <- "zm"
run2 <- "r2"
# working example for a pipe with fixed variable name
a %>%
filter_(~x == tag) %>%
group_by_(tag) %>%
summarise_(variable_name = interp(~sum(var, na.rm = T),
var = as.name(paste0(metric,"_",run1))))
# non-working example of what I want to do
a %>%
filter_(~x == tag) %>%
group_by_(tag) %>%
summarise_(as.name(paste0(metric,"_",run1)) =
interp(~sum(var, na.rm = T),
var = as.name(paste0(metric,"_",run1))))
我尝试了很多不同的方法,包括使用as.name()或interp(),但似乎没有什么效果。
rename_
步骤?它可能看起来像rename_(.dots = setNames("variable_name", paste0(metric,"_",run1)))
。 - aosmith