顺序命名变量(初学者)

时间:2012-03-13 23:48:22

标签: r

我想将循环内创建的数据分配给相应的一系列顺序编号的变量。如上所述,此示例中的循环每次都会覆盖,因此存储的所有内容都是分配给矩阵傀儡的最终数据集。我想做的是让每次迭代创建一个名为“somename(counter)”的新变量,并将矩阵stooges的当前值存储在该变量中。然后,下面的循环应该创建变量some​​name0,值为0,0,0,0,somename1,值为1:4,somename2为值2,4,6,8。我认为在循环中动态创建变量是最好的,以便自动命名变量和创建多少变量。

例如:

no_its <- 3  
counter <- 0
while(counter < no_its){
    a <- c(counter*(1:4))
    stooges <- as.matrix(a)
    rownames(stooges)<-c("Larry","Moe","Curly","Shemp")
    counter <- counter+1
}
stooges

output:
      [,1]
Larry    2
Moe      4
Curly    6
Shemp    8

2 个答案:

答案 0 :(得分:2)

尝试使用列表,它总是在R

中成为更好的选择
counter <- 0:2
names(counter) <- paste("somename",seq_along(counter)-1,sep="")
(result <- lapply(counter, function(counter) counter*1:4))
result[["somename1"]]
## only if you must
attach(result, pos=2)
ls(pos=2)

答案 1 :(得分:0)

如果你想要一个矩阵,那么创建一个空矩阵,然后填充它:

 stooges <- matrix(NA, ncol=4, nrow=4)
 row.names(stooges)<-c("Larry","Moe","Curly","Shemp")
 stooges[1:4, 1:4] <- col(stooges) * 1:4
 stooges
#---------
      [,1] [,2] [,3] [,4]
Larry    1    2    3    4
Moe      2    4    6    8
Curly    3    6    9   12
Shemp    4    8   12   16