下面是一些免費的數據:
a <- data.frame(X = 1, Y = 2, Z = 3)
b <- data.frame(X = 4, Y = 5, Z = 6)
c <- data.frame(X = 7, Y = 8, Z = 9)
這裏是一個使用mget
的方法和一個自定義功能foo
name.list <- c("a", "b", "c")
foo <- function(x, i) setNames(x, paste(name.list[i], names(x), sep = "_"))
list2env(Map(foo, mget(name.list), seq_along(name.list)), .GlobalEnv)
a
# a_X a_Y a_Z
# 1 1 2 3
b
# b_X b_Y b_Z
# 1 4 5 6
c
# c_X c_Y c_Z
# 1 7 8 9
通過將a
,b
和c
放入他們自己的環境(甚至列表)中,您也可以避免get
或mget
。您也如果你走這條路線將不需要的name.list
載體,因爲它是一樣ls(e)
e <- new.env()
e$a <- a; e$b <- b; e$c <- c
bar <- function(x, y) setNames(x, paste(y, names(x), sep = "_"))
list2env(Map(bar, as.list(e), ls(e)), .GlobalEnv)
做這種方式的另外一個振作的是,你還必須在環境e
未受破壞的數據幀。沒有任何內容被覆蓋(檢查a
與e$a
)。