为什么以下内容返回“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.table
。 ifelse
适用于 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/