R 组合DT上的combn返回错误“;n<;m";

R 组合DT上的combn返回错误“;n<;m";,r,dataframe,data.table,correlation,combn,R,Dataframe,Data.table,Correlation,Combn,我有一个31557个观测值的数据集,变量顺序、数量和材料。我试图在R中运行此命令: 第一: DT <- data.table(Order.number=X$Order.number, Materials=X$Materials) setorder(DT, Order.number, Materials) DT材料中是否有NA值 否则你的代码对我有用 #generate some random data X<-data.frame(Order.number=rep(letters[1

我有一个31557个观测值的数据集,变量顺序、数量和材料。我试图在R中运行此命令:

第一:

DT <- data.table(Order.number=X$Order.number, Materials=X$Materials)
setorder(DT, Order.number, Materials)

DT材料中是否有NA值

否则你的代码对我有用

#generate some random data
X<-data.frame(Order.number=rep(letters[1:10],3), Materials=rep(letters[11:20],3))

library(data.table)
DT <- data.table(Order.number=X$Order.number, Materials=X$Materials)
setorder(DT, Order.number, Materials)

ans <- DT[, as.data.table(do.call(rbind, combn(Materials, 2, simplify=FALSE))), 
      by=Order.number][,
                       .N, by=.(V1, V2)]
#生成一些随机数据

X很明显,您的DT中有一些分组变量的值
顺序。数字
给出一组长度为1或更小的,因此
combn(材料,2…
抱怨n 您可以使用
DT[,.N,by=Order.number][N==1]
轻松诊断长度为1的组

然后从摘要中排除这些内容,或者为combn编写一个包装器,当输入长度n
(可以说,
combn
应该有一个增强非默认选项,当应用于长度n<2的组时,有选择地抑制错误,这在分组df/dt上运行时很可能发生)

返回的是什么
length(Materials)
是指长度(dt$Materials)?它正在返回31557可能重复的combn error含义:error in FUN(X[[i]],…):n顺序的值。数字
给出一组长度为1或更小的,因此
combn(Materials,2…
抱怨nDT[,.N,by=Order.number][N==1]
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)]
#generate some random data
X<-data.frame(Order.number=rep(letters[1:10],3), Materials=rep(letters[11:20],3))

library(data.table)
DT <- data.table(Order.number=X$Order.number, Materials=X$Materials)
setorder(DT, Order.number, Materials)

ans <- DT[, as.data.table(do.call(rbind, combn(Materials, 2, simplify=FALSE))), 
      by=Order.number][,
                       .N, by=.(V1, V2)]