R:包含不同长度的列的数据帧,对应于combn()的最大可能值/choose()
我试图生成一个包含所有可能组合结果的数据帧。我正在使用这个函数R:包含不同长度的列的数据帧,对应于combn()的最大可能值/choose(),r,matrix,dataframe,combinations,R,Matrix,Dataframe,Combinations,我试图生成一个包含所有可能组合结果的数据帧。我正在使用这个函数 combn(x,m) x <- 17 m <- some range of the numbers between 2 and 16 combn(x,m) 对于m的每个值,combn(x,m)返回一个包含m行和choose(x,m)列的数组。我不确定我是否理解您要将哪个向量附加到您的dataframe.Right中,我使用这些维度来生成我的数据帧。循环的每次迭代都会生成一个向量。第一次迭代的向量长度为choose(x,
combn(x,m)
x <- 17
m <- some range of the numbers between 2 and 16
combn(x,m)
对于m
的每个值,combn(x,m)
返回一个包含m
行和choose(x,m)
列的数组。我不确定我是否理解您要将哪个向量附加到您的dataframe.Right中,我使用这些维度来生成我的数据帧。循环的每次迭代都会生成一个向量。第一次迭代的向量长度为choose(x,2)。对于第二次迭代,长度为choose(x,3)。对于第三次迭代,长度为choose(x,4)。但是,根据我想看的内容,第一次迭代的向量长度可以是choose(x,5),然后下一次的向量长度可以是choose(x,6),等等。所以这些向量的长度都不同。最大值为ncol(combn(n,长度(n)/2)),但前提是n/2的值包含在范围内。您能描述一下如何获得每个向量吗?例如,对于m=2
,向量对应于什么?如果有一个函数myfunction(m,x)
返回长度为choose(x,m)
,则可以执行lappy(2:16,函数(y)myfunction(y,x))
。这将返回长度不等的向量列表。然后,要转换为带有填充NAs的data.frame,请检查此问题
n <- max(length(data.frame), length(new.vector))
for(l in 0:n) {
data.frame[l,j-1] <- new.vector[l]
}
dataframe <- data.frame(matrix(NA, nrow = ncol(combn(n,length(n)/2)),
ncol = max.n-min.n+1))