如何以智能方式为多个变量分配相同的值?

时间:2014-05-07 12:13:49

标签: r

我想为10个变量分配相同的值,例如

v1 <-  1:10
v2 <-  1:10
....
v10 <-  1:10

eval(paste("v",1:10,"<-","1:10",sep=""))  #can not get the result

如何在R中以智能方式为多个变量分配相同的值?

3 个答案:

答案 0 :(得分:7)

DONT是聪明的方式。列出清单。

> mylist=list()
> for(i in 1:10){mylist[[i]]=1:10}
> mylist[[4]]
 [1]  1  2  3  4  5  6  7  8  9 10

为什么呢?好吧,因为一旦你创建了v1v10,你就会想知道如何获得v i的某些价值,现在你有两个问题

FWIW(以及IW很少)你使用assignget来做这些事情,但是如果你不能理解那些帮助页面那么你就不应该使用它们。< / p>

答案 1 :(得分:3)

完全同意@Spacedman。但只是为了完整起见,如果您选择忽略好的建议,那么您将如何做到这一点:

lapply(paste0("v", 1:10), assign, value=1:10, pos=1)

或者,使用您建议的方法,这是第二种方式:

lapply(paste("v",1:10,"<-","1:10",sep=""), function(x){
  eval(parse(text=x), envir=.GlobalEnv)
})

答案 2 :(得分:1)

注意 - 我同意Spacedman认为这可能不合适。不过这是另一种方法

v1<-v2<-v3<-v4<-v5<-v6<-v7<-v8<-v9<-v10<-1:10

这比shadow的方法要少得多,但是如果变量都有不同的名称(例如“v1”,“countX”,“fish”等),那么它会起作用并且在你的代码中可以读取。