data.table warning - 项目大小但最大大小是(回收剩余的项目)

tuc*_*son 0 r data.table

我正在使用data.table J来完成th15列的子集: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)
Run Code Online (Sandbox Code Playgroud)

我尝试用一​​个小例子重现错误,但无法重现.

我想Item 3是指J()中的第三个输入,我可以看到它length(unique(th1$dept_size))是5.

34它来自哪里?为什么要剩下4件物品呢?

sha*_*dow 6

您可以使用CJ获取所有唯一组合而不是所有唯一值.

th1[CJ(0, unique(market), unique(dept_size), 1, factor(1)), nomatch=0]
Run Code Online (Sandbox Code Playgroud)

  • 注意:`CJ`是`expand.grid`的一种更快的`data.table`替代方法 (2认同)