【问题标题】:Rownames as column in list of dataframes行名作为数据框列表中的列
【发布时间】:2016-05-27 15:22:03
【问题描述】:

我想根据行名为列表中的每个数据框创建一个列 year。这个问题has been asked before SO 但不幸的是答案没有帮助。那么,有没有办法做到呢?

mylist <- list(structure(list(a = 1:10), .Names = "a", row.names = 1991:2000, class = "data.frame"), 
            structure(list(a = 1:10), .Names = "a", row.names = 1992:2001, class = "data.frame"))

预期结果:

[[1]]
      a year
1991  1 1991
1992  2 1992
1993  3 1993
1994  4 1994
1995  5 1995
1996  6 1996
1997  7 1997
1998  8 1998
1999  9 1999
2000 10 2000

[[2]]
      a year
1992  1 1992
1993  2 1993
1994  3 1994
1995  4 1995
1996  5 1996
1997  6 1997
1998  7 1998
1999  8 1999
2000  9 2000
2001 10 2001

【问题讨论】:

  • 为什么没有帮助?你指的是什么问题?

标签: r list rowname


【解决方案1】:

我们可以使用Map

Map(cbind, mylist, year= lapply(mylist, rownames))

【讨论】:

  • 我猜您使用Map + lapply 的原始答案效率会降低
  • @docendodiscimus 我没有看到您发布了类似的答案。我会删除它。
【解决方案2】:

这是另一个选择:

lapply(mylist, function(df) transform(df, year = rownames(df)))

为了好玩,你也可以使用 dplyr 的 add_rownames 函数:

lapply(mylist, dplyr::add_rownames, 'year')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-11
    • 2019-06-05
    相关资源
    最近更新 更多