0

我在 R 中有以下基本问题。

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

如果可能的话,我想将它们收集为 R 中的数据框行。也就是说,我想介绍一个数据框datast

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

其中点表示产生长度取决于的向量的命令k

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

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

编辑

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

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

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

4

1 回答 1

3

你可以考虑ldplyplyr这里使用。

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
于 2013-08-20T12:48:55.327 回答