r - R - 使用 Reduce 比较对象的向量
问题描述
我正在尝试使用 Reduce 比较对象的向量 a
- all.equal 不起作用
- == 适用于数字,但不足以用于对象。
我更喜欢不使用现有包但仅使用 R 核心功能的解决方案
示例(简化为使用数字向量而不是对象):
test <- c(1,1,1,1,1)
Reduce("==",test)
[1] TRUE
我不明白为什么 == 有效,而 all.equal 无效
Reduce(all.equal,test)
[1] "Modes: character, numeric"
[2] "Lengths: 3, 1"
[3] "target is character, current is numeric"
最后的评论:
这不是重复的。我对比较对象而不是数值的解决方案感兴趣
数值向量元素的比较:参见 stackoverflow 上的现有解决方案 测试单个数值向量的所有元素之间的相等性
解决方案
您可以尝试将每个元素与第一个元素进行比较identical
。sapply
x <- list(list(1), list(1))
all(sapply(x[-1], identical, x[[1]]))
#[1] TRUE
x <- list(list(1), list(2))
all(sapply(x[-1], identical, x[[1]]))
#[1] FALSE
推荐阅读
- python - Anaconda:升级到 2018.12 和 mkl 错误
- javascript - 箭头功能:我无法访问外部对象
- java - React Native Android Intent putExtra obj ReadableMap 如何恢复对象
- android - 每次更新都会下载 OBB 扩展文件,即使它没有改变?
- flask - 阿帕奇,ugswi,烧瓶,通信问题
- excel - 如何在选择更改时切换单元格颜色
- c# - 如何通过使用 DateTime 列和变量月、年的查询来填充包含记录的数组
- r - R中的二维随机级数
- javascript - 本地未声明的变量成为全局变量。它们在文档中的什么位置结束?
- python - 如何从 pymongo 字段中的所有值创建一个列表?