在summary_at()中使用n()时出错
在Summary_at中使用n时,我得到以下错误:在summary_at()中使用n()时出错,r,dplyr,rlang,summarize,R,Dplyr,Rlang,Summarize,在Summary_at中使用n时,我得到以下错误: Error: n() should only be called in a data context Call `rlang::last_error()` to see a backtrace 其他人认为这可能是dplyr与plyr之间的掩蔽问题,有两种解决方案: 将summary_at替换为'dplyr::summary_at' 调用detachpackage:plyr,unload=TRUE 他们都没有消除这个错误,我很想知道是什么导致了
Error: n() should only be called in a data context
Call `rlang::last_error()` to see a backtrace
其他人认为这可能是dplyr与plyr之间的掩蔽问题,有两种解决方案:
将summary_at替换为'dplyr::summary_at'
调用detachpackage:plyr,unload=TRUE
他们都没有消除这个错误,我很想知道是什么导致了它。以下是一个可重复的示例,其应导致相同的错误:
Df <- data.frame(
Condition = c(rep("No", 20), rep("Yes",20)),
Height = c(rep(1,10),rep(2,10),rep(1,10),rep(2,10)),
Weight = c(rep(10,5),rep(20,5),rep(30,5), rep(40,5))
)
x <- c("Height","Weight")
Df %>%
group_by(Condition) %>%
summarise_at(vars(one_of(x)), c(mean = mean, sd = sd, count = n()))
注意:如果删除count=n,代码运行时不会出现任何问题,我相信这是因为n在mutate、filter或summary中作用于数据源本身,因此不是矢量化函数。只需使用长度作为矢量化版本
Df%>%
组\按条件%>%
总结x,cmean=mean,sd=sd,count=length
如果只希望有一个计数列,则:
Df%>%
组\按条件%>%
突变计数=n%>%
按条件分组,计数%>%
总结x,cmean=平均值,sd=标准差
我相信这是因为n在mutate、filter或summary中作用于数据源本身,所以不是一个矢量化函数。只需使用长度作为矢量化版本
Df%>%
组\按条件%>%
总结x,cmean=mean,sd=sd,count=length
如果只希望有一个计数列,则:
Df%>%
组\按条件%>%
突变计数=n%>%
按条件分组,计数%>%
总结x,cmean=平均值,sd=标准差
非常感谢您的解释,作为一个附带问题,这将导致两列“Height_count”和“Weight_count”,有没有办法只获得一个名为“count”的列。有点老套,但不认为有办法在摘要中这样做,所以我们可以在之前的一个变种调用中添加它,并将其作为一个组保留在结果中。将编辑我的以上回复以添加。非常感谢您的解释,作为一个附带问题,这将导致两列“身高计数”和“体重计数”,有没有办法只获得一列“计数”。有点老套,但在总结中不认为有办法做到这一点,因此,我们可以在之前将其添加到一个变异调用中,并使其成为一个组,以将其保留在结果中。将在上面编辑我的答复以添加。相关:相关: