具有名称而不是数字的数据框列表?

时间:2014-08-13 09:19:07

标签: r list

我不确定这个问题是否过于基本,但我找不到答案,尽管搜索谷歌已经有一段时间我不得不问这里..

假设我想从数据框(df1和df2)创建一个列表,我如何使用数据框的名称作为列表“index”(?)而不是数字?即,如何获得[[df1]]而不是[[1]]和[[df2]]而不是[[2]]?

list(structure(list(a = 1:10, b = 1:10), .Names = c("a", "b"), row.names = c(NA, 
-10L), class = "data.frame"), structure(list(b = 1:10, a = 1:10), .Names = c("b", 
"a"), row.names = c(NA, -10L), class = "data.frame"))

好的,完全不同的方式来问这个问题,希望能让事情更清楚;)

我有三个数据框

weguihl <- structure(list(a = 1:3, b = 1:3), .Names = c("a", "b"), row.names = c(NA, -3L), class = "data.frame")
raeg <- structure(list(b = 1:3, a = 1:3), .Names = c("b", "a"), row.names = c(NA, -3L), class = "data.frame")
awezilf <- structure(list(a = 1:3, b = 1:3), .Names = c("a", "b"), row.names = c(NA, -3L), class = "data.frame")

我想从中创建一个列表..

li <- list(weguihl, raeg, awezilf)

但现在我遇到的问题是 - 不记住数据帧的顺序 - 我不知道哪个数据帧在列表中...

> li
[[1]]
  a b
1 1 1
2 2 2
3 3 3

[[2]]
  b a
1 1 1
2 2 2
3 3 3

[[3]]
  a b
1 1 1
2 2 2
3 3 3

因此我更喜欢这个输出

    > li
[[weguihl]]
  a b
1 1 1
2 2 2
3 3 3

[[raeg]]
  b a
1 1 1
2 2 2
3 3 3

[[awezilf]]
  a b
1 1 1
2 2 2
3 3 3

我如何到达那里?

1 个答案:

答案 0 :(得分:1)

您可以在干净的全球环境中使用mget实现此目标。 像

这样的东西

清洁全球环境

rm(list = ls()) 

您的数据框

weguihl <- structure(list(a = 1:10, b = 1:10), .Names = c("a", "b"), row.names = c(NA, -10L), class = "data.frame")
raeg <- structure(list(b = 1:10, a = 1:10), .Names = c("b", "a"), row.names = c(NA, -10L), class = "data.frame")
awezilf <- structure(list(a = 1:10, b = 1:10), .Names = c("a", "b"), row.names = c(NA, -10L), class = "data.frame")

运行mget默认情况下将返回数据框列表

li <- mget(ls(), .GlobalEnv)
li
# $awezilf
# a b
# 1 1 1
# 2 2 2
# 3 3 3
# 
# $raeg
# b a
# 1 1 1
# 2 2 2
# 3 3 3
# 
# $weguihl
# a b
# 1 1 1
# 2 2 2
# 3 3 3