【问题标题】:How to assign many variables the same value in a smart way? [duplicate]如何以智能的方式为多个变量分配相同的值? [复制]
【发布时间】: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


    【解决方案1】:

    不要是聪明的方法。列个清单。

    > 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,你就会想知道如何为i 的某个值获取v,现在你有两个问题。

    FWIW(和 IW 很少)您使用 assignget 来做这些事情,但如果您无法理解这些帮助页面,那么您不应该使用它们。

    【讨论】:

      【解决方案2】:

      完全同意@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)
      })
      

      【讨论】:

        【解决方案3】:

        注意 - 我同意 Spacedman 的观点,这可能是不可取的。但是,这是另一种方法

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

        这比 shadow 的方法优雅得多,但如果变量都有不同的名称(例如“v1”、“countX”、“fish”等),它会起作用并且在您的代码中相当可读。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-09-16
          • 2012-07-23
          • 1970-01-01
          • 2016-09-03
          • 2019-01-27
          • 1970-01-01
          • 2020-06-25
          • 2022-01-02
          相关资源
          最近更新 更多