【问题标题】:How to print the names of dataframes in list with for loop?如何使用 for 循环打印列表中数据帧的名称?
【发布时间】:2018-11-09 16:31:03
【问题描述】:

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

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)

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

for (i in x) {
  deparse(substitute(x[i]))
}

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

[1] df1
[2] df2

谢谢!

【问题讨论】:

    标签: r list loops for-loop dataframe


    【解决方案1】:

    Data.frames 没有“名称”。一个变量可以指向一个 data.frame,但是一个 data.frame 可以没有名字就存在(就像你做了x &lt;- list(data.frame(x), data.frame(y))一样)。所以你的 data.frame 没有被命名为df1df1 是一个恰好指向 data.frame 的变量名。

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

    x <- list(df1=df1, df2=df2)
    

    然后您可以使用names(x) 设置名称。如果您想查看创建保留对象名称的列表的其他方法,请参阅现有问题:Can lists be created that name themselves based on input object names?

    【讨论】:

      【解决方案2】:

      有一些非常有用的点:使用x &lt;- list(df1=df1, df2=df2) 将数据框的名称保存在列表中,并使用names() 函数。这是我用来明确打印列表中数据框名称的代码:

      x <- c(1, 2, 3, 4, 5)
      y <- c(5, 4, 3, 2, 1)
      df <- data.frame(x, y)
      df1 <- data.frame(x)
      df2 <- data.frame(y)
      x <- list(df1=df1, df2=df2)
      for (i in 1:2) {
      print(as.character(names(x)[i]))
      }
      

      这会打印出列表中数据框的名称。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-09-08
        • 1970-01-01
        • 2017-08-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多