Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在summary_at()中使用n()时出错_R_Dplyr_Rlang_Summarize - Fatal编程技术网

在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 他们都没有消除这个错误,我很想知道是什么导致了

在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 他们都没有消除这个错误,我很想知道是什么导致了它。以下是一个可重复的示例,其应导致相同的错误:

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”的列。有点老套,但不认为有办法在摘要中这样做,所以我们可以在之前的一个变种调用中添加它,并将其作为一个组保留在结果中。将编辑我的以上回复以添加。非常感谢您的解释,作为一个附带问题,这将导致两列“身高计数”和“体重计数”,有没有办法只获得一列“计数”。有点老套,但在总结中不认为有办法做到这一点,因此,我们可以在之前将其添加到一个变异调用中,并使其成为一个组,以将其保留在结果中。将在上面编辑我的答复以添加。相关:相关: