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

时间:2015-08-30 20:58:18

标签: r list dataframe extract

我制作了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应该在名为&#34; book&#34;的df中提取。和其他人一样。我可以逐个提取它们并重命名它们,但这一步看起来多余,不认为是有效的。

我将不胜感激为解决方案提供帮助。

感谢。

1 个答案:

答案 0 :(得分:3)

我认为您正在寻找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"