将数据帧放入列表中,然后将它们提取到单独的数据帧中

Putting data frames into a list and then extracting them into seperate data frames

我制作了 3 个数据框,然后使用下面给出的命令将它们放入列表中

# create 3 data frames
bag <- round(data.frame(v1=rnorm(10),v2=rnorm(10,1,2)),2)
book <- data.frame(a1=rnorm(10),a2=rnorm(10,1,2),a3=rep("NA",10))
table <- round(data.frame(c1=rnorm(10),c2=rnorm(10,1,2)),2)

# create a list
list1 <- setNames(lapply(ls(pattern="bag|book|table"), function(x) get(x)), ls(pattern="bag|book|table"))

我已经对列表中的数据帧执行了一些操作,并希望将数据帧提取回单独的帧,就像它们进入列表之前一样。我正在寻找一种解决方案,我不必再次提及数据框的名称,而是使用相同的名称。例如,列表中的第一个 df 应该在名为 "book" 的 df 中提取,其他 df 也一样。我可以一个一个地提取它们并重命名它们,但是这一步看起来多余而且我认为效率不高。

对于解决方案的任何帮助,我将不胜感激。

谢谢。

我想你在找 list2env:

bag <- round(data.frame(v1=rnorm(10),v2=rnorm(10,1,2)),2)
book <- data.frame(a1=rnorm(10),a2=rnorm(10,1,2),a3=rep("NA",10))
table <- round(data.frame(c1=rnorm(10),c2=rnorm(10,1,2)),2)
# create a list
list1 <- setNames(
  lapply(ls(pattern="bag|book|table"), function(x) get(x)), 
  ls(pattern="bag|book|table"))
##
rm(bag, book, table)
R> ls()
#[1] "list1"
##
list2env(list1, .GlobalEnv)
R> ls()
#[1] "bag"   "book"  "list1" "table"