R 使用名称而不是数字的数据帧列表?
我不确定这个问题是否太基本,但由于我在谷歌搜索了很长一段时间后仍未找到答案,我不得不在这里提问 假设我想从数据帧(df1和df2)中创建一个列表,如何使用数据帧的名称作为列表“索引”(?)而不是数字?即,我如何获得[[df1]]而不是[[1]]和[[df2]]而不是[[2]]R 使用名称而不是数字的数据帧列表?,r,list,R,List,我不确定这个问题是否太基本,但由于我在谷歌搜索了很长一段时间后仍未找到答案,我不得不在这里提问 假设我想从数据帧(df1和df2)中创建一个列表,如何使用数据帧的名称作为列表“索引”(?)而不是数字?即,我如何获得[[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"),
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")
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")
因此,我更喜欢这个输出
> 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
如何实现这一目标?您可以在清洁的全球环境中通过
mget
实现这一目标。
差不多
清洁全球环境
rm(list = ls())
您可以使用数据帧
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")
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")
你的问题不清楚。示例数据中的
列表
没有名称。您可以先添加名称(names(L)是的,对不起,我的问题是:如何让我的列表自动包含数据帧的名称?因此,如果我的dfs不是df1、df2等,但是df_-bla、df_-bl、df_-blabla,我如何将这些名称添加到列表中?嗯,现在不确定这是否更清楚..不,仍然不清楚:-)您的意思是说您的环境中有一些数据.frame
s,您想将它们组合成一个列表
,名称作为列表
名称保持不变吗<代码>mget(c(“df1”、“df2”))
。你也可以使用ls()
来帮助将名字分组在一起,如果它们遵循一个共同的命名模式。也许,我会编辑这个问题…@martin right,done!嗯,好的,我不确定这是否适用于我的真实数据,因为我要在列表中组合的dfs首先是从各种其他数据帧创建的,所以我不知道如何将结果数据帧作为列表名“隔离”。@好的,直接将它们放在列表中,而不创建中间对象。或者你可以在ls
@Roland中使用正则表达式,我也在考虑正则表达式,但无法在他的数据帧中识别任何常见模式names@DavidArenburg如果全部失败,他们可以在正则表达式中指定每个名称。@Roland,好吧,这和Ananda在评论中建议的使用名称没有什么不同
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