R:包含不同长度的列的数据框,对应于combn()/ choose()的最大可能值

时间:2017-05-19 22:10:54

标签: r matrix dataframe combinations

我正在尝试生成包含可能组合的所有结果的数据框。我正在使用这个功能

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] 
 }

我有两个问题:

  1. 是否有更好的方法可以追加一个长度与数据框中前一列不同的新列,这些列使用R和向量操作的功能而不是通过循环执行此操作?
  2. 由于这种方法有效,我可以继续使用它,但我很难找到设置我初始化的数据帧中最大行数的方法。它应该是最大选择(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))
    

0 个答案:

没有答案