我在R中有以下基本问题。
我有一个for (k in 1:x){...}
周期,它产生长度取决于k
的数字向量。
对于k
的每个值,我生成一个数字向量。
如果可能的话,我想将它们收集为R中的数据帧行。换句话说,我想介绍一个数据框data
s.t.
for (k in 1:x) {
data[k,] <- ...
}
其中点表示生成长度取决于k
的向量的命令。
不幸的是,据我所知,R中数据帧行的长度是常量,因为它是一个相等长度的向量列表。我已经尝试用适当数量的零来完成每一行以达到恒定长度(在这种情况下等于x
)。我想“动态地”工作。
我不认为这个问题等同于数据帧中不同长度的合并向量;由于if
周期,每步只知道一个向量。
修改
我的意思的一个非常简单的例子。对于每个k
,我想编写其组件为1,2,...,k
的向量,并将其存储为数据帧k
的第data
行。在上面的设置中,我会写
for (k in 1:x) {
data[k,] <- seq(1,k,1)
}
由于seq(1,k,1)
的长度取决于k
,因此代码无效。
答案 0 :(得分:3)
您可以考虑在ldply
使用plyr
。
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