从dplyr 0.7.0开始,不推荐使用`SUMMISE_EACH_()`。请改用`cross()`。输入`..1`时出现`摘要()`问题 [英] `summarise_each_()` is deprecated as of dplyr 0.7.0. Please use `across()` instead. Problem with `summarise()` input `..1`
本文介绍了从dplyr 0.7.0开始,不推荐使用`SUMMISE_EACH_()`。请改用`cross()`。输入`..1`时出现`摘要()`问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有这个,它起作用了:
data %>%
select_if(function(x) any(is.na(x))) %>%
summarise_each(funs(sum(is.na(.))))
警告消息: 从dplyr 0.7.0开始,summarise_each()
已过时。 请改用across()
。
当我更改Sumarise_each()时:
data %>%
select_if(function(x) any(is.na(x))) %>%
summarise(across(funs(sum(is.na(.)))))
发生这种情况:
错误:summarise()
输入..1
有问题。
X必须使用有效的下标向量设置列的子集。
X子脚本的类型错误fun_list
。
ℹ必须是数字或字符。
ℹ输入..1
为across(funs(sum(is.na(.))))
。
我想用Cross函数更新我的代码。
推荐答案
执行此操作的方法如下:
library(dplyr)
df %>%
summarize(across(where(~any(is.na(.)), ~sum(is.na(.))))
starwars %>%
summarise(across(where(~any(is.na(.))), ~sum(is.na(.))))
height mass hair_color birth_year sex gender homeworld species
<int> <int> <int> <int> <int> <int> <int> <int>
1 6 28 5 44 4 4 10 4
您不再需要select_if
和across()
。across()
内部的where()
允许您执行逻辑检查。然后提供汇总函数。~
表示法允许您执行引用数据的函数,其中圆点表示eahc列中的数据。
这篇关于从dplyr 0.7.0开始,不推荐使用`SUMMISE_EACH_()`。请改用`cross()`。输入`..1`时出现`摘要()`问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文