【问题标题】:How to create a list of many dataframes that have the same pattern of names? [duplicate]如何创建具有相同名称模式的许多数据框的列表? [复制]
【发布时间】:2022-11-19 00:40:47
【问题描述】:

假设我有这么多数据集(假设有 1000 个数据集):

df1 = data.frame(x = 1:10)

df2 = data.frame(x = 2:11)

df3 = data.frame(x = 3:5)

df4 = data.frame(x = 11:20)

我想创建一个名为 L 的列表,如下所示

L = list(df1,df2,df3,df4)

但是如果我有数千个数据帧,就很难在列表中写下每个数据帧的名称。会花很长时间。想要一个可以使创建此列表更容易的功能。谢谢。

【问题讨论】:

  • 您的数据框的名称是否有规律?他们是否按顺序命名为 df1、df2、df3 等等?
  • 对,那是正确的
  • L = lapply(1:4, function(x) {get(paste0("df",x)) }) 其中 4 是数据帧末尾的最大数字。
  • 非常感谢。您能否将您的答案添加到答案部分,以便每个人都可以看到答案。再次感谢
  • 你最初是如何创造这些的?最好不要有一堆名称中带有索引的变量。如果您首先在列表中创建这些相关表,那么思考会容易得多。虽然技术上您可以使用 get()mget(),但在 R 中它确实是一种糟糕的代码味道。

标签: r list dataframe


【解决方案1】:

通过使用BaseR

n = 4
L = lapply(1:n, function(x) {get(paste0("df",x)) })

在哪里n是数据框名称末尾的最大数字。

【讨论】:

    【解决方案2】:

    您可以使用 get() 从对象名称中提取数据帧。

    
    N <- 4
    nms <- sprintf("df%i",1:N)
    out <- list()
    for(i in 1:N){
    out[[i]] <- get(nms[i])  
    }
    
    out
    

    【讨论】:

      猜你喜欢
      • 2016-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多