在函数中使用整洁求值和分组方式时,R对象未发现错误



我正在编写一个函数,它应该返回一个pieplot。现在我不明白为什么它找不到分组变量。每次运行此程序时,它都会抛出一个错误:Error in as.list.environment(x, all.names = TRUE): object 't1gender' not foundt1gender是我想要分组的变量。

问题是,我不能像通常使用group_by()那样在函数中使用变量。请参阅此处:dcl-prog.stanford.edu/tidy-eval-basics.html。我希望varname表现为环境变量和数据变量之间的混合。就像环境变量一样,我希望它引用另一个值(t1gender(。然后,我希望group_by()将该值(t1gender(视为数据变量,并在data内部查找匹配列。

欢迎任何提示!

这是我的代表:

library(dplyr)
library(plotly)
data <- data.frame(
ID_code = c(1001L,1002L,1003L,
1004L,1005L,1006L,1007L,1008L,1009L,1010L),
t1gender = c(1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 2L, 1L)
)
pie_plot <- function(data = data, labels, varname, colors) {
lbls <- labels
count <- data %>%
dplyr::group_by({{varname}}) %>% 
tally() %>%
.[2] %>%
.[1:length(labels), ] %>%
unlist(.)
df <- as_tibble(cbind(count, lbls))
plot_ly(df, labels = ~lbls, values = ~count,
marker = list(colors = colors,
line = list(color = '#FFFFFF', width = 1)),
type = "pie", width = 280, height = 280)
}
pie_plot(data, labels = c("Male", "Female"), varname = t1gender, colors = c('#440154FF', '#21908CFF'))
#> Error in as.list.environment(x, all.names = TRUE): object 't1gender' not found

非常感谢!

好的,找到了:(

pie_plot <- function(data, labels, varname, colors) {
lbls <- labels
count <- data %>%
dplyr::group_by({{varname}}) %>% 
tally() %>%
.[2] %>%
.[1:length(labels), ] %>%
unlist(.)
df <- as_tibble(cbind(count, lbls))
plot_ly(df, labels = df$lbls, values = df$count,
marker = list(colors = colors,
line = list(color = '#FFFFFF', width = 1)),
type = "pie", width = 280, height = 280)
}
pie_plot(data, labels = c("Male", "Female"), varname = t1gender, colors = c('#440154FF', '#21908CFF'))

相关内容

最新更新