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)
谢谢!
Data.frames 没有“名称”。变量可以指向 data.frame,但 data.frame 可以根本没有名称而存在(就像您所做的那样x <- list(data.frame(x), data.frame(y)))。所以你的 data.frame 没有命名df1;df1是一个恰好指向 data.frame 的变量名。
如果将变量放入列表中,则变量的值将放入列表中,而不是变量名称本身。因此,如果您想保留最初在列表中保存对象的变量的名称,则需要将该名称存储在列表中。一种常见的方法是
x <- list(df1=df1, df2=df2)
Run Code Online (Sandbox Code Playgroud)
然后您可以使用 来设置名称names(x)。如果您想了解创建保留对象名称的列表的其他方法,请参阅现有问题:可以根据输入对象名称创建其名称本身的列表吗?