【发布时间】:2014-06-24 09:55:19
【问题描述】:
我想为 10 个变量分配相同的值,例如
v1 <- 1:10
v2 <- 1:10
....
v10 <- 1:10
eval(paste("v",1:10,"<-","1:10",sep="")) #can not get the result
如何在 R 中以智能的方式为多个变量分配相同的值?
【问题讨论】:
标签: 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 中以智能的方式为多个变量分配相同的值?
【问题讨论】:
标签: r
不要是聪明的方法。列个清单。
> 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,你就会想知道如何为i 的某个值获取v,现在你有两个问题。
FWIW(和 IW 很少)您使用 assign 和 get 来做这些事情,但如果您无法理解这些帮助页面,那么您不应该使用它们。
【讨论】:
完全同意@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)
})
【讨论】:
注意 - 我同意 Spacedman 的观点,这可能是不可取的。但是,这是另一种方法
v1<-v2<-v3<-v4<-v5<-v6<-v7<-v8<-v9<-v10<-1:10
这比 shadow 的方法优雅得多,但如果变量都有不同的名称(例如“v1”、“countX”、“fish”等),它会起作用并且在您的代码中相当可读。
【讨论】: