我想将循环内创建的数据分配给相应的一系列顺序编号的变量。如上所述,此示例中的循环每次都会覆盖,因此存储的所有内容都是分配给矩阵傀儡的最终数据集。我想做的是让每次迭代创建一个名为“somename(counter)”的新变量,并将矩阵stooges的当前值存储在该变量中。然后,下面的循环应该创建变量somename0,值为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
答案 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