需要在R中的循环中为变量赋值

时间:2015-02-12 06:14:39

标签: r

我需要在循环中为变量分配一些值

例如:

abc_1<-  
abc_2<-
abc_3<-
.....

类似的东西:

for(i in 1:20)
{
 paste("abc",i,sep="_")<-some calculated value
}

我尝试使用上面的粘贴,但它不起作用。 怎么可能这样做。谢谢

1 个答案:

答案 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()内放置数字向量时,它会为数字向量中的每个值返回一个连续值的字符向量。

编辑:

正如格雷戈尔在下面所说,这在列表中做得更好,因为:

  1. 会更快。
  2. 制作大量的东西时,你可能想对每个东西做同样的事情。 lapply()非常擅长这一点。
  3. 例如:

    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)