【问题标题】:writing multiple variables in a short way in r在r中以简短的方式编写多个变量
【发布时间】:2017-07-12 19:16:57
【问题描述】:

我有一个从 2005 年到 2016 年的 data.frames 列表。它们都以相同的方式编写,除了年份的数字:

m  =list(X2016_kvish_1_10t = X2016_kvish_1_10t, X2015_kvish_1_10t = X2015_kvish_1_10t, X2014_kvish_1_10t = X2014_kvish_1_10t,
     X2013_kvish_1_10t = X2013_kvish_1_10t, X2012_kvish_1_10t = X2012_kvish_1_10t, X2011_kvish_1_10t = X2011_kvish_1_10t,
     X2010_kvish_1_10t = X2010_kvish_1_10t, X2009_kvish_1_10t = X2009_kvish_1_10t, X2008_kvish_1_10t = X2008_kvish_1_10t, 
     X2007_kvish_1_10t = X2007_kvish_1_10t, X2006_kvish_1_10t = X2006_kvish_1_10t, X2005_kvish_1_10t = X2005_kvish_1_10t)

有没有更短的方法来写,而不需要单独写?

【问题讨论】:

    标签: r variables dataframe


    【解决方案1】:

    试试mget:

    df_names = paste0("X", 2005:2016, "_kvish_1_10t")
    m = mget(df_names)
    

    编辑

    正如@d.b 指出的那样,您甚至不需要创建df_names

    m = mget(ls(pattern="_kvish_1_10t$"))
    

    【讨论】:

    • @d.b ls(pattern=...)的好电话
    • @MichaelSpector 很高兴它成功了!如果您对答案感到满意,请记得将其标记为已接受。
    【解决方案2】:

    您可以使用mget 函数提供工作区中对象名称的字符向量。

    为了展示如何做,我做了一个可复制的例子。


    df_name <- paste0("x", 2005:2016, "_kvish_1_10t")
    df_name
    #>  [1] "x2005_kvish_1_10t" "x2006_kvish_1_10t" "x2007_kvish_1_10t"
    #>  [4] "x2008_kvish_1_10t" "x2009_kvish_1_10t" "x2010_kvish_1_10t"
    #>  [7] "x2011_kvish_1_10t" "x2012_kvish_1_10t" "x2013_kvish_1_10t"
    #> [10] "x2014_kvish_1_10t" "x2015_kvish_1_10t" "x2016_kvish_1_10t"
    # juste create some dummy table for example
    l <- lapply(df_name, assign, value = mtcars[1:2], envir= .GlobalEnv)
    # Use mget to get a list of all the object
    m <- mget(df_name, envir = .GlobalEnv)
    str(m)
    #> List of 12
    #>  $ x2005_kvish_1_10t:'data.frame':   32 obs. of  2 variables:
    #>   ..$ mpg: num [1:32] 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
    #>   ..$ cyl: num [1:32] 6 6 4 6 8 6 8 4 4 6 ...
    #>  $ x2006_kvish_1_10t:'data.frame':   32 obs. of  2 variables:
    #>   ..$ mpg: num [1:32] 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
    #>   ..$ cyl: num [1:32] 6 6 4 6 8 6 8 4 4 6 ...
    #>  $ x2007_kvish_1_10t:'data.frame':   32 obs. of  2 variables:
    #>   ..$ mpg: num [1:32] 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
    #>   ..$ cyl: num [1:32] 6 6 4 6 8 6 8 4 4 6 ...
    #>  $ x2008_kvish_1_10t:'data.frame':   32 obs. of  2 variables:
    #>   ..$ mpg: num [1:32] 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
    #>   ..$ cyl: num [1:32] 6 6 4 6 8 6 8 4 4 6 ...
    #>  $ x2009_kvish_1_10t:'data.frame':   32 obs. of  2 variables:
    #>   ..$ mpg: num [1:32] 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
    #>   ..$ cyl: num [1:32] 6 6 4 6 8 6 8 4 4 6 ...
    #>  $ x2010_kvish_1_10t:'data.frame':   32 obs. of  2 variables:
    #>   ..$ mpg: num [1:32] 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
    #>   ..$ cyl: num [1:32] 6 6 4 6 8 6 8 4 4 6 ...
    #>  $ x2011_kvish_1_10t:'data.frame':   32 obs. of  2 variables:
    #>   ..$ mpg: num [1:32] 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
    #>   ..$ cyl: num [1:32] 6 6 4 6 8 6 8 4 4 6 ...
    #>  $ x2012_kvish_1_10t:'data.frame':   32 obs. of  2 variables:
    #>   ..$ mpg: num [1:32] 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
    #>   ..$ cyl: num [1:32] 6 6 4 6 8 6 8 4 4 6 ...
    #>  $ x2013_kvish_1_10t:'data.frame':   32 obs. of  2 variables:
    #>   ..$ mpg: num [1:32] 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
    #>   ..$ cyl: num [1:32] 6 6 4 6 8 6 8 4 4 6 ...
    #>  $ x2014_kvish_1_10t:'data.frame':   32 obs. of  2 variables:
    #>   ..$ mpg: num [1:32] 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
    #>   ..$ cyl: num [1:32] 6 6 4 6 8 6 8 4 4 6 ...
    #>  $ x2015_kvish_1_10t:'data.frame':   32 obs. of  2 variables:
    #>   ..$ mpg: num [1:32] 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
    #>   ..$ cyl: num [1:32] 6 6 4 6 8 6 8 4 4 6 ...
    #>  $ x2016_kvish_1_10t:'data.frame':   32 obs. of  2 variables:
    #>   ..$ mpg: num [1:32] 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
    #>   ..$ cyl: num [1:32] 6 6 4 6 8 6 8 4 4 6 ...
    

    【讨论】:

      猜你喜欢
      • 2016-06-01
      • 2020-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-17
      • 2020-08-10
      相关资源
      最近更新 更多