与R中的'for'循环长度不同的向量:在数据帧中合并
我在R中有以下基本问题 我有一个与R中的'for'循环长度不同的向量:在数据帧中合并,r,for-loop,dataframe,R,For Loop,Dataframe,我在R中有以下基本问题 我有一个for(k in 1:x){…}循环,它产生的数值向量的长度取决于k。 对于k的每个值,我生成一个数值向量 如果可能的话,我希望将它们收集为R中数据帧的行。换句话说,我想介绍一个数据帧datas.t for (k in 1:x) { data[k,] <- ... } > SEQ(1,k,1)< /> >取决于 k>代码>代码不起作用。 可以考虑使用 LDPEG从 P
for(k in 1:x){…}
循环,它产生的数值向量的长度取决于k
。
对于k
的每个值,我生成一个数值向量
如果可能的话,我希望将它们收集为R中数据帧的行。换句话说,我想介绍一个数据帧data
s.t
for (k in 1:x) {
data[k,] <- ...
}
<> > <代码> SEQ(1,k,1)< /> >取决于<代码> k>代码>代码不起作用。 可以考虑使用<代码> LDPEG从<代码> 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
set.seed(123)
#k是每个结果的长度
K< P> >您可以考虑使用<代码> LDPEG从<代码> 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
set.seed(123)
#k是每个结果的长度
你能举个简单的例子说明你想要达到的目标吗?这个问题的措辞有点混乱,我不确定你所说的如果循环是什么意思:我不认为这个问题等同于在一个数据帧中合并不同长度的向量;由于“如果”循环,每一步只知道一个矢量
。您是指一些ifelse()
语句吗?我在你的代码中没有看到任何内容。好的,我将相应地编辑问题!谢谢你的反馈。另外,你能举一个简单的例子说明你想要实现什么吗?这个问题的措辞有点混乱,我不确定你所说的如果循环是什么意思:我不认为这个问题等同于在一个数据帧中合并不同长度的向量;由于“如果”循环,每一步只知道一个矢量
。您是指一些ifelse()
语句吗?我在你的代码中没有看到任何内容。好的,我将相应地编辑问题!谢谢你的反馈。另外,如果他想让向量成为数据帧的行
,我想我们不需要对最终结果进行转置。这个ldply(ll,rbind)
应该就可以了。@Mariam谢谢。我编辑过。顺便说一下,代码非常简洁。我明白了:使用列表可以避免维度的诅咒:-)。非常有帮助,谢谢!如果他希望向量是数据帧的行
,我认为我们不需要对最终结果进行转置。这个ldply(ll,rbind)
应该就可以了。@Mariam谢谢。我编辑过。顺便说一下,代码非常简洁。我明白了:使用列表可以避免维度的诅咒:-)。非常有帮助,谢谢!