我需要在循环中为变量分配一些值
例如:
abc_1<-
abc_2<-
abc_3<-
.....
类似的东西:
for(i in 1:20)
{
paste("abc",i,sep="_")<-some calculated value
}
我尝试使用上面的粘贴,但它不起作用。 怎么可能这样做。谢谢
答案 0 :(得分:2)
assign()
和paste0()
可以为您提供帮助。
例如:
object_names <- paste0("abc",1:20)
for (i in 1:20){
assign(object_names[i],runif(40))
}
assign()
获取object_names中的字符串,并将第二个参数中的函数分配给每个名称。当您在paste0()
内放置数字向量时,它会为数字向量中的每个值返回一个连续值的字符向量。
编辑:
正如格雷戈尔在下面所说,这在列表中做得更好,因为:
lapply()
非常擅长这一点。例如:
N <- 20
# create random numbers in list
abcs <- lapply(1:N,function(i) runif(40))
# multiply each vector in list by 10
abc.mult <- lapply(1:length(abcs), function(i) abcs[[i]] * 10)