从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`

查看:6
本文介绍了从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
ℹ必须是数字或字符。
ℹ输入..1across(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_ifacross()across()内部的where()允许您执行逻辑检查。然后提供汇总函数。~表示法允许您执行引用数据的函数,其中圆点表示eahc列中的数据。

这篇关于从dplyr 0.7.0开始,不推荐使用`SUMMISE_EACH_()`。请改用`cross()`。输入`..1`时出现`摘要()`问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆