如何使用for循环打印列表中数据帧的名称?

Mar*_*ayo 1 loops for-loop r list dataframe

我有一个数据框列表,如下所示:

x <- c(1, 2, 3, 4, 5)
y <- c(5, 4, 3, 2, 1)
df1 <- data.frame(x)
df2 <- data.frame(y)
x <- list(df1, df2)
Run Code Online (Sandbox Code Playgroud)

我想使用 for 循环打印列表中数据帧的名称,x如下所示:

for (i in x) {
  deparse(substitute(x[i]))
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用。我的目标是将数据帧的名称打印为如下字符:

[1] df1
[2] df2
Run Code Online (Sandbox Code Playgroud)

谢谢!

MrF*_*ick 5

Data.frames 没有“名称”。变量可以指向 data.frame,但 data.frame 可以根本没有名称而存在(就像您所做的那样x <- list(data.frame(x), data.frame(y)))。所以你的 data.frame 没有命名df1df1是一个恰好指向 data.frame 的变量名。

如果将变量放入列表中,则变量的值将放入列表中,而不是变量名称本身。因此,如果您想保留最初在列表中保存对象的变量的名称,则需要将该名称存储在列表中。一种常见的方法是

x <- list(df1=df1, df2=df2)
Run Code Online (Sandbox Code Playgroud)

然后您可以使用 来设置名称names(x)。如果您想了解创建保留对象名称的列表的其他方法,请参阅现有问题:可以根据输入对象名称创建其名称本身的列表吗?