我有一个包含 31557 个观测值的数据集,以及变量 Order.number 和 Materials。我正在尝试在 R 中运行它:
第一的:
DT <- data.table(Order.number=X$Order.number, Materials=X$Materials)
setorder(DT, Order.number, Materials)
然后:
library(data.table)
ans <- DT[, as.data.table(do.call(rbind, combn(Materials, 2, simplify=FALSE))),
by=Order.number][,
.N, by=.(V1, V2)]
但我得到了错误combn(Materials, 2, simplify = FALSE) : n < m
如果我只使用随机生成的表,它就可以工作。那么这可能与我拥有的数据集有关吗?
编辑:我尝试了combn error 的含义,但得到“do.call(rbind, function(x) if (length(x) > 1) { : second argument must be a list”
ans <- DT[, as.data.table(do.call(rbind, function(x)
if(length(x)>1) {
combn(Materials, 2, simplify=FALSE)
}
else x)),
by=Order.number][,
.N, by=.(V1, V2)]