r - 连续测试多个 %in% 是什么意思?

标签 r logic truthiness

考虑:

a <- c("a", "b", "c")
b <- c("a", "e", "f")
c <- c("a", "h", "i")

> a %in% b %in% c
[1] FALSE FALSE FALSE

我原以为它的计算结果为 TRUE FALSE FALSE,因为每个向量中的第一个元素是“a”。为什么不是这样?

最佳答案

您首先要做的是此操作:a %in% b 导致 TRUE FALSE FALSE。然后你基本上执行链 c(TRUE,FALSE,FALSE) %in% c,当然,这将导致所有 False

你可以试试这个来获得想要的 bool 向量(考虑到位置):

a == Reduce(function(u,v) ifelse(u==v, u, F), list(a,b,c))
#[1]  TRUE FALSE FALSE

如果你想要公共(public)元素,而不是取决于位置,你可以这样做:

Reduce(intersect, list(a,b,c))

关于r - 连续测试多个 %in% 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31134310/

相关文章:

r - 如何使用 R 中的 rjson/RJSONIO 的 toJSON 方法生成有效的 JSON?

r - 如何在 R 中将 glm 函数中的预测变量移动一行?

perl - 解析逻辑表达式并将其转换为 Perl 中的树

python - Python中的和/或?

macos - R包安装在所有机器上成功,但一台

r - R 中的绘图() : ylim range don't match the y axis range on graph

c# - `` 吗? ?`` 运营商使用短路?

php - 为什么不能将 SplFileInfo 转换为 bool 值?

python - 如何在 return 语句中将字符串评估为 boolean 值?

python - 为什么 Python 在 if 语句中将字符串/数字评估为 True 而 myNumber == True 返回 False?