r - 为什么 any() 只为数字而不是逻辑 data.frame 定义?
问题描述
这似乎很令人惊讶:
df1 <- data.frame(A=TRUE, B=FALSE)
df2 <- data.frame(A=1, B=2)
> any(df1)
Error in FUN(X[[i]], ...) :
only defined on a data frame with all numeric variables
> any(df2)
[1] TRUE
这似乎不是一个错误,因为错误正确地说明了any()
仅在 a 中的所有变量data.frame
都是数字的情况下才有效。
但是,为什么要any()
对所有数值变量起作用,而不是在值都是合乎逻辑的时候呢?
解决方案
any
如果vector
按照文档说明可以工作
给定一组逻辑向量,至少有一个值是真的吗?
在 OP 的帖子中,这两个示例都不是vector
s。第一个是带有logical
列的data.frame。如果我们通过方式满足文档,即创建一个逻辑向量,则转换为matrix
(因为matrix
avector
无论如何都是具有某些dim
属性的)
any(as.matrix(df1))
#[1] TRUE
或者vector
通过unlist
ing 将其更改为 a list
(adata.frame
是s 的 a 又名相同长度的列list
)vector
any(unlist(df1))
在第二种情况下,有一个警告,它正在做一些强制
any(df2)
#[1] TRUE
警告消息:在 any(c(1, 2), na.rm = FALSE) 中:将“双”类型的参数强制转换为逻辑
推荐阅读
- c++ - C++ 中的 n % m 和 n - m * (n / m) 表达式有什么区别吗?
- python - 如何在 Ubuntu 中删除 Python2?
- prometheus - 如何减去具有不同标签的指标?
- python - 如何将此输出转换为二进制
- autodesk-forge - 在伪造查看器中加载 360 度全景图像
- amazon-web-services - AWS::Route53::RecordSet 中的“必须指定 HostedZoneId 和 HostedZoneName 中的一个”
- kubernetes - 谷歌云系统 kube-system 命名空间部署的守护进程不起作用
- c++ - 静态分析给出“取消引用
, 已知为 nullptr" - scala - Scala - 如何从平面地图返回简单的原始类型值?
- javascript - 正弦波动画性能建议