【问题标题】:How to get the names of the data frames within a list如何获取列表中数据框的名称
【发布时间】:2016-08-04 10:06:31
【问题描述】:

我的列表有以下数据框。我创建列表时没有命名它们

str(train_data)
List of 16
 $ :'data.frame':   72 obs. of  2 variables:
  ..$ DateTime: Date[1:72], format: "2009-07-31" "2009-08-31" "2009-09-30" ...
  ..$ Value   : num [1:72] 49.9 53.5 54.4 56 54.4 55.3 57.2 55.8 58.8 58.1 ...
 $ :'data.frame':   72 obs. of  2 variables:
  ..$ DateTime: Date[1:72], format: "2009-07-31" "2009-08-31" "2009-09-30" ...
  ..$ Value   : num [1:72] 4555 5014 4647 5121 6461 ...
 $ :'data.frame':   72 obs. of  2 variables:
  ..$ DateTime: Date[1:72], format: "2009-07-31" "2009-08-31" "2009-09-30" ...
  ..$ Value   : num [1:72] 215 215 216 217 217 ...
 $ :'data.frame':   72 obs. of  2 variables:
  ..$ DateTime: Date[1:72], format: "2009-07-31" "2009-08-31" "2009-09-30" ...
  ..$ Value   : num [1:72] 5399 5374 5560 5517 5386 ...
 $ :'data.frame':   72 obs. of  2 variables:
  ..$ DateTime: Date[1:72], format: "2009-07-31" "2009-08-31" "2009-09-30" ...
  ..$ Value   : num [1:72] 139901 139492 138818 138432 138659 ...
 $ :'data.frame':   72 obs. of  2 variables:
  ..$ DateTime: Date[1:72], format: "2009-07-31" "2009-08-31" "2009-09-30" ...
  ..$ Value   : num [1:72] 117 118 118 118 119 ...
 $ :'data.frame':   72 obs. of  2 variables:
  ..$ DateTime: Date[1:72], format: "2009-07-31" "2009-08-31" "2009-09-30" ...
  ..$ Value   : num [1:72] 0.9 0.4 -0.2 -0.6 -0.7 -0.5 -0.4 -0.2 0.2 0.5 ...
 $ :'data.frame':   72 obs. of  2 variables:
  ..$ DateTime: Date[1:72], format: "2009-07-31" "2009-08-31" "2009-09-30" ...
  ..$ Value   : num [1:72] 119 121 121 122 124 ...
 $ :'data.frame':   72 obs. of  2 variables:
  ..$ DateTime: Date[1:72], format: "2009-07-01" "2009-08-03" "2009-09-01" ...
  ..$ Value   : num [1:72] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 ...
 $ :'data.frame':   72 obs. of  2 variables:
  ..$ DateTime: Date[1:72], format: "2009-07-31" "2009-08-31" "2009-09-30" ...
  ..$ Value   : num [1:72] 411 418 386 396 375 352 345 336 381 422 ...
 $ :'data.frame':   68 obs. of  2 variables:
  ..$ DateTime: Date[1:68], format: "2009-11-30" "2009-12-31" "2010-01-31" ...
  ..$ Value   : num [1:68] 100 100 101 101 101 ...
 $ :'data.frame':   72 obs. of  2 variables:
  ..$ DateTime: Date[1:72], format: "2009-07-31" "2009-08-31" "2009-09-30" ...
  ..$ Value   : num [1:72] 0.2 1.9 -2.4 1 1 0.4 0 0.2 2.2 0.7 ...
 $ :'data.frame':   72 obs. of  2 variables:
  ..$ DateTime: Date[1:72], format: "2009-07-31" "2009-08-31" "2009-09-30" ...
  ..$ Value   : num [1:72] 14601 14814 15009 15352 15219 ...
 $ :'data.frame':   72 obs. of  2 variables:
  ..$ DateTime: Date[1:72], format: "2009-07-31" "2009-08-31" "2009-09-30" ...
  ..$ Value   : num [1:72] 11.39 14.58 9.38 10.41 10.86 ...
 $ :'data.frame':   72 obs. of  2 variables:
  ..$ DateTime: Date[1:72], format: "2009-07-31" "2009-08-31" "2009-09-30" ...
  ..$ Value   : num [1:72] -4.43 -4.72 -4.83 -4.81 -3.74 -2.16 -0.6 0.03 1.02 1.36 ...
 $ :'data.frame':   72 obs. of  2 variables:
  ..$ DateTime: Date[1:72], format: "2009-07-31" "2009-08-31" "2009-09-30" ...
  ..$ Value   : num [1:72] 0 0.3 0.2 0.3 0.3 0.1 0.1 -0.1 0 0 ...

现在我想创建一个数据框,它的第一列包含这些数据框的名称,但我似乎找不到它们的名称。我是否应该手动命名所有 16 个数据框(这效率不高)

谢谢。

【问题讨论】:

  • 列表中没有 data.frame 的名称。您是如何创建list 的?
  • 我使用list.files 命令从目录中导入包含所有文件名的列表。 temp = list.files(pattern="*.csv") 然后我使用以下命令创建列表my_data <- lapply(temp, read.csv)
  • 好的,在这种情况下,我们可以将list 元素命名为temp

标签: r list


【解决方案1】:

如果我们需要为list 中的每个data.frame 创建一列“名称”(基于OP 帖子中的strdata.frame 中没有names,所以我们可以通过paste将'dat'字符串命名为train_data),我们可以使用Map在每个data.frame中创建一个'Names'列

Map(cbind, Names = paste0('dat', seq_along(train_data)), train_data)

更新

如果我们使用了list.files 来获取文件的名称,我们用sub 去掉.csv 部分,并将'train_data' 命名为list,然后使用Map

nm1 <- sub("\\.csv", "", temp)
names(train_data) <- nm1
Map(cbind, Names = names(train_data), train_data)

或者只是

Map(cbind, Names = nm1, train_data)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-12
    • 1970-01-01
    • 2017-02-06
    • 2021-09-14
    • 2022-01-26
    • 1970-01-01
    • 2019-08-11
    • 2020-04-11
    相关资源
    最近更新 更多