循环遍历r中的向量列表
我试图循环浏览一个列表a向量,并在途中赋值: 我生成10个向量,如下所示:循环遍历r中的向量列表,r,vector,R,Vector,我试图循环浏览一个列表a向量,并在途中赋值: 我生成10个向量,如下所示: for(i in 1:10){ vecname <- paste('blub',i,sep='') assign(vecname,vector(mode='numeric',length = my_len)) } ls() = blub1, blub2 .... blub10 for(1:10中的i){ vecname以下是我将如何做到这一点,遵循“列表,而不是循环”的“R方式”: my_len“R方
for(i in 1:10){
vecname <- paste('blub',i,sep='')
assign(vecname,vector(mode='numeric',length = my_len))
}
ls() = blub1, blub2 .... blub10
for(1:10中的i){
vecname以下是我将如何做到这一点,遵循“列表,而不是循环”的“R方式”:
my_len“R方式”不是在您的工作区中有10个单独的向量,而是这10个向量的单个列表lappy(bla,“[”)%%>%setNames(sprintf(“blub%02d”,1:10))
将为您提供一个包含10个对象的列表,每个对象都包含bla
。请注意,您需要require(dplyr)
要执行%>%
管道。或者简单地设置名称(如.list(bla),paste0('blub',bla))
@AdamQuek您不需要dplyr
而是magrittr
来处理管道。规则236:fortunes::fortune(236)
应该使用assign功能的人只有那些完全理解为什么永远不应该使用assign功能的人。--Greg Snow R-help(2009年7月)
blub1[1] <- bla[1]
blub2[1] <- bla[2]
blub3[1] <- bla[3]
...
blub10[1] <- bla[10]
my_len <- 3
blub <- replicate(10, vector(mode = "numeric", length = my_len), simplify = FALSE)
bla <- 100:109
blub <- Map(function(a, b) {
a[1] <- b
a
}, blub, bla)
# [[1]]
# [1] 100 0 0
#
# [[2]]
# [1] 101 0 0
#
# [[3]]
# [1] 102 0 0
#
# [[4]]
# [1] 103 0 0
#
# [[5]]
# [1] 104 0 0
#
# [[6]]
# [1] 105 0 0
#
# [[7]]
# [1] 106 0 0
#
# [[8]]
# [1] 107 0 0
#
# [[9]]
# [1] 108 0 0
#
# [[10]]
# [1] 109 0 0