r中

2017-07-12 31 views
1

寫多個變量,在很短的路我已經從2005年的年data.frames名單 - 2016年它們都寫同樣的方式,除了年的數字:r中

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) 

有編寫它的更短的方式,而不需要單獨寫所有它們?

回答

3

嘗試mget

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

編輯

由於@Db指出的那樣,你甚至不需要創建df_names

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

'MGET(LS(模式= 「kvish_1_10t」))'可能工作太 –

+1

@Db上'LS良好的通話(模式= ...)' – juan

+0

它的工作原理謝謝:) –

0

可以使用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 ...