首页 文章

R中“for”循环的不同长度的向量:数据框中的合并[重复]

提问于
浏览
0

这个问题在这里已有答案:

我在R中有以下基本问题

我有一个 for (k in 1:x){...} 循环,它产生长度取决于 k 的数值向量 . 对于 k 的每个值,我产生一个数值向量 .

如果可能的话,我想将它们收集为R中的数据帧行 . 换句话说,我想介绍一个数据框 data s.t.

for (k in 1:x) {
            data[k,] <- ...      
                     }

其中点表示生成矢量的命令,其长度取决于 k .

不幸的是,据我所知,R中数据帧的行长度是常量,因为它是一个相等长度的向量列表 . 我已经尝试用适当数量的零来完成每一行以达到恒定长度(在这种情况下等于 x ) . 我想工作"dynamically" .

我不认为这个问题等同于数据帧中不同长度的合并向量;由于 if 循环,每步只知道1个向量 .

Edit

我的意思是一个非常简单的例子 . 对于每个 k ,我想编写其组件为 1,2,...,k 的向量,并将其存储为 k 数据帧 data 的第一行 . 在上面的设置中,我会写

for (k in 1:x) {
                data[k,] <- seq(1,k,1)     
                         }

由于 seq(1,k,1) 的长度取决于 k ,因此代码不起作用 .

1 回答

  • 3

    你可以考虑在这里使用 plyrldply .

    set.seed(123)
    #k is the length of each result
    k <- sample( 5 , 3 , repl = TRUE )
    #[1] 2 4 3
    
    
    # Make a list of vectors, each a sequence from 1:k
    ll <- lapply( k , function(x) seq_len(x) )
    #[[1]]
    #[1] 1 2
    
    #[[2]]
    #[1] 1 2 3 4
    
    #[[3]]
    #[1] 1 2 3
    
    # take our list and rbind it into a data.frame, filling in missing values with NA
    ldply( ll , rbind)
    #  1 2  3  4
    #1 1 2 NA NA
    #2 1 2  3  4
    #3 1 2  3 NA
    

相关问题