数据表因子的%%运算符行为?

时间:2015-05-14 16:04:20

标签: r data.table

我似乎无法让%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

它的工作方式与我期望的数据框架相同......

> b <- data.frame(c1=factor(c(1,2,3)))
> '2' %in% b[,1]
[1] TRUE

任何帮助表示赞赏....

1 个答案:

答案 0 :(得分:6)

a[,1,with=F]是一个data.table,而不是b[,1]之类的向量。这是记录在案的。

data.table是一个列表,help("%in%")表示“列表转换为字符向量”。所以,我猜这种情况会发生(但它隐藏在match的C源代码中):

as.character(a[,1,with=F])
#[1] "1:3"

您可以使用[[高效选择data.table列:

'2' %in% a[[1]]
#[1] TRUE