r - 使用 data.table 时没有匹配的 %in%

标签 r data.table match

为什么以下内容返回“TRUE”

ifelse(13 %in% 1:13, TRUE, FALSE)
[1] TRUE

以下内容(对我来说或多或少相同)返回“FALSE”

TestData <- as.data.table(1:13)
ifelse(13 %in% TestData[1:13, "V1"], TRUE, FALSE)
[1] FALSE

最佳答案

我们需要将列提取为向量

13 %in% TestData[1:13][["V1"]]
#[1] TRUE
<小时/>

在OP的代码中,TestData[1:13, "V1"]仍然是一个具有单列的data.tableifelse 适用于 vector,因为 data.table/data.frame 是一个带有一些属性的 list

13 %in% TestData[1:13, "V1"]
#[1] FALSE

13 %in% list(1:13) 
#[1] FALSE

此外,在这种情况下不需要 ifelse,因为 %in% 的输出是逻辑向量

正如@Frank所说,首先将列子集为向量会更有效

13 %in% TestData[["V1"]][1:13]

关于r - 使用 data.table 时没有匹配的 %in%,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43428635/

相关文章:

regex - 是否有一个R函数来查找字符向量中的regexp匹配索引?

r - 动态高阶逐行乘积

R(data.table)查找间隔中天数比例最大的日历月

r - 按组对前 500 行进行子集,用于组的子集

从R中的data.table中删除带有NA的行

javascript - 忽略字符串的第一个字符 - JS - 正则表达式

javascript - 匹配混合了文本和数字的数组

r - 使用 R 和管道工加载文件

r - 我无法编织成pdf的汉字总结

r - fread segfault 具有 30GB 空间分隔的文件,其中一些行以空格开头