我似乎无法让%in%运算符表现为数据表因子列.我知道我可能错过了一些数据表的秘密语法,但是我找不到它......我已经搜遍了所有.
这是一个很好的例子来说明我的痛苦.当然,简单的答案是使用数据框,但我有一个大数据集,可以从数据表的某些功能中受益.
> a <- data.table(c1=factor(c(1,2,3)))
> a
c1
1: 1
2: 2
3: 3
> '2' %in% a[,1,with=F]
[1] FALSE
> 2 %in% a[,1,with=F]
[1] FALSE
Run Code Online (Sandbox Code Playgroud)
它的工作方式与我期望的数据帧一样......
> b <- data.frame(c1=factor(c(1,2,3)))
> '2' %in% b[,1]
[1] TRUE
Run Code Online (Sandbox Code Playgroud)
任何帮助赞赏....
a[,1,with=F]是一个data.table而不是像vector这样的b[,1].这是记录在案的.
data.table是一个列表,help("%in%")表示"列表转换为字符向量".所以,我猜这种情况会发生(但它隐藏在C源代码中match):
as.character(a[,1,with=F])
#[1] "1:3"
Run Code Online (Sandbox Code Playgroud)
您可以使用[[以下方法有效地选择data.table列:
'2' %in% a[[1]]
#[1] TRUE
Run Code Online (Sandbox Code Playgroud)