错误:grouped_df_impl(数据,未命名(变量),删除)错误:列col1
未知
pivot <- function(df, col1, col2){
df %>%
group_by(col1, col2) %>%
summarise(n = n()) %>%
spread(col2, n, fill = 0)
}
运行命令pivot (iris, Species, Petal.Width)
谁能说出此错误消息的原因?以及解决方法
答案 0 :(得分:2)
您需要使用group_by_
进行编程。
library(tidyverse)
pivot <- function(df, col1, col2){
df %>%
group_by_(col1, col2) %>%
summarise(n = n()) %>%
spread(col2, n, fill = 0)
}
pivot (iris, "Species", "Petal.Width")
这也应该起作用。无需在此处引用这些列。
pivot <- function(df, col1, col2) {
group_var1 <- enquo(col1)
group_var2 <- enquo(col2)
df %>%
group_by(!!group_var1, !!group_var2) %>%
summarise(n = n())
}
pivot (iris, Species, Petal.Width)
我认为第二个输出更容易阅读。
有关更多信息,请参见dplyr: How to use group_by inside a function?和https://dplyr.tidyverse.org/articles/programming.html。
答案 1 :(得分:1)
另一个答案是:
pivot <- function(df, col1, col2){
col1<-deparse(substitute(col1))
col2<-deparse(substitute(col2))
df %>%
group_by_(col1, col2) %>%
summarise(n = n()) %>%
spread(col2, n, fill = 0)
}
pivot (iris, Species, Petal.Width)