我不确定这个问题是否过于基本,但我找不到答案,尽管搜索谷歌已经有一段时间我不得不问这里..
假设我想从数据框(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
我如何到达那里?
答案 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