我希望创建一个向其分配特定值的向量列表。我知道我可以做点什么
var_list=c(V1, V2...etc)
然后在for循环中使用var_list [i]。要做到这一点,我必须首先手动创建列表,这很长。 我知道我可以做点什么
for(i in 1:n){
assign(paste("Mx", i, sep = ""), i)
}
这将创建我的变量名称。麻烦的是,我该如何管理它们?我想要一种方法来做这样的事情:
for(i in 1:n){
attributes(assign(paste("Mx", i, sep = ""), i))<-list(dim=1:n)
"here I would like to append the newly created variable (Mx"i") into a list so I could manage the whole thing later on".
}
所以我能做到:
for (k in 1:n){
for (j in 1:m)
new_list[[k]][j]<-other_list[[k]][(j-1)*3+1]
}
Any1有个主意吗? 基本的问题是我有这个长长的矢量列表(这里用&#34; other_list&#34;表示)。此列表中的每个向量都有36个条目。我想在三个不同的向量中划分这些向量中的每一个(我需要指定来自&#34; other_list&#34的向量的特定值;我想应用于&#34; new_list的向量的特定值&#34 ;. 谢谢!
答案 0 :(得分:1)
只需预先分配列表并指定其名称:
n <- 10
#pre-allocate list
mylist <- vector(n, mode = "list")
#assign names
names(mylist) <- paste0("Mx", seq_len(n))
#fill the list
for(i in 1:n){
mylist[[i]] <- i
}
mylist[1:3]
#$Mx1
#[1] 1
#
#$Mx2
#[1] 2
#
#$Mx3
#[1] 3
PS:你应该学会使用lapply
来完成这些任务。
setNames(lapply(seq_len(n), identity), paste0("Mx", seq_len(n)))
具体例子的最佳解决方案是:
setNames(as.list(seq_len(n)), paste0("Mx", seq_len(n)))