r - 无法使用 map_dbl 进行总结
问题描述
我试图总结 中的所有数字变量iris
,而不是总结非数字变量。
但是,这不起作用:
iris %>% map_dbl(function(x) if(is.numeric(x)) sum(x))
为什么这不起作用?如果我先删除非数字变量,它会起作用,如下所示
iris[1:4] %>% map_dbl(function(x) if(is.numeric(x)) sum(x))
我们还能用map_dbl
在这种情况下吗?
解决方案
以下内容不起作用,因为您没有指定如果变量不是数字变量,R 应该做什么。这就是您遇到错误的原因。
iris %>% map_dbl(function(x) if(is.numeric(x)) sum(x))
但是,如果您指定else
,它将起作用:
iris %>% map_dbl(function(x) if(is.numeric(x)) sum(x) else NA)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
876.5 458.6 563.7 179.9 NA
如果您过滤掉非数字变量,它将起作用,因为 R 不需要检查else
. if
条件总是会满足的。
iris[1:4] %>% map_dbl(function(x) if(is.numeric(x)) sum(x))
或者,您可以使用dplyr
:
library(dplyr)
iris %>% summarize(across(is.numeric, sum))
Sepal.Length Sepal.Width Petal.Length Petal.Width
1 876.5 458.6 563.7 179.9
推荐阅读
- azure-devops - 从 Azure DevOps 经典管道执行 YAML 模板
- php - jquery datatable initComplete函数不起作用
- mysql - 在MySQL中按日期/时间排序时如何获取上一行/下一行?
- regex - 反转匹配的正则表达式模式
- javascript - 距离下一个生日的剩余时间javascript
- r - 在 tapply 函数中无法获取范围以产生结果
- python - 如何使用集合和节点修复无效语法?
- java - 在 catch 块中调用 void 方法并引发异常的方法的单元测试
- gcc - 在构建内核模块时设置包含路径
- php - 如何从我的 php 数组中检索一个值?