我正在使用data.table J在5列th1
上执行split1, market, dept_size, bool_3, cust_poor_rich
的子集。
我知道我应该使用unique(column_name)
指定该列应包含任何值。
虽然我使用此命令遇到以下警告:
setkey(th1, split1, market, dept_size, bool_3, cust_poor_rich)
subs = th1[J(0, unique(market), unique(dept_size), 1, factor(1)), nomatch=0]
Warning message:
In as.data.table.list(i) :
Item 3 is of size 5 but maximum size is 34 (recycled leaving a remainder of 4 items)
我尝试用一个小例子重现错误,但无法重现。
我认为Item 3
是指J()中的第三个输入,我可以看到length(unique(th1$dept_size))
是5。
但是34
来自哪里?
为什么要留下剩余的4件物品?
答案 0 :(得分:5)
您可以使用CJ
获取所有唯一组合,而不是所有唯一值。
th1[CJ(0, unique(market), unique(dept_size), 1, factor(1)), nomatch=0]