我正在尝试生成包含可能组合的所有结果的数据框。我正在使用这个功能
combn(x,m)
x <- 17
m <- some range of the numbers between 2 and 16
在循环中,每次迭代对应一个新的m值。循环的每次迭代返回长度为choose(n,k)的向量,其中n等于m,x等于k。我想将每个结果向量作为一列添加到包含所有结果的数据框中,但这并不简单,因为每个向量的长度都不同。我已经能够通过首先建立NA值(data.frame)的数据帧来实现这一点,然后通过以下循环逐步填充new.vector的值:
n <- max(length(data.frame), length(new.vector))
for(l in 0:n) {
data.frame[l,j-1] <- new.vector[l]
}
我有两个问题:
由于这种方法有效,我可以继续使用它,但我很难找到设置我初始化的数据帧中最大行数的方法。它应该是最大选择(n,k1),选择(n,k2),选择(n,k3)...选择(n,kn)。我目前正在使用以下内容来初始化数据帧,但是它会为给定的n生成绝对最大值,根据k值的范围,这可能会超出必要的行数。
dataframe <- data.frame(matrix(NA, nrow = ncol(combn(n,length(n)/2)),
ncol = max.n-min.n+1))