我想为10个变量分配相同的值,例如
v1 <- 1:10
v2 <- 1:10
....
v10 <- 1:10
eval(paste("v",1:10,"<-","1:10",sep="")) #can not get the result
如何在R中以智能方式为多个变量分配相同的值?
答案 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
为什么呢?好吧,因为一旦你创建了v1
到v10
,你就会想知道如何获得v
i
的某些价值,现在你有两个问题
FWIW(以及IW很少)你使用assign
和get
来做这些事情,但是如果你不能理解那些帮助页面那么你就不应该使用它们。< / 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”等),那么它会起作用并且在你的代码中可以读取。