【问题标题】:Prefix column index to column names in list of data frames为数据框列表中的列名添加列索引前缀
【发布时间】:2015-03-08 03:53:04
【问题描述】:

我想为数据框中的列名添加列号前缀。这样做的最佳方法是什么?

例如,我想要下表中的“1_mpg”、“2_cyl”之类的内容:

structure(list(mpg = c(21, 21), cyl = c(6, 6)), .Names = c("mpg", 
"cyl"), row.names = c("Mazda RX4", "Mazda RX4 Wag"), class = "data.frame")

然后如何将其扩展到数据框列表?

list(structure(list(mpg = c(21, 21), cyl = c(6, 6)), .Names = c("mpg", 
"cyl"), row.names = c("Mazda RX4", "Mazda RX4 Wag"), class = "data.frame"), 
structure(list(mpg = c(21, 21), cyl = c(6, 6)), .Names = c("mpg", 
"cyl"), row.names = c("Mazda RX4", "Mazda RX4 Wag"), class = "data.frame"))

【问题讨论】:

    标签: list dataframe lapply


    【解决方案1】:

    这是我最终使用的(虽然我猜还有更优雅的东西):

    # sample list of 2 data frames
    x =
      list(structure(list(mpg = c(21, 21), cyl = c(6, 6)), .Names = c("mpg", 
      "cyl"), row.names = c("Mazda RX4", "Mazda RX4 Wag"), class = "data.frame"), 
      structure(list(mpg = c(21, 21), cyl = c(6, 6)), .Names = c("mpg", 
      "cyl"), row.names = c("Mazda RX4", "Mazda RX4 Wag"), class = "data.frame"))
    
    # create function to append an index to column names
    newColNames = function(a) {
              b=lapply(seq_along(colnames(a)), 
              function(i) paste(i,"_",colnames(a)[i],sep=""))
              colnames(a)=b
              return(a)
              }
    
    # apply function
    new_list = lapply(x, function(y) newColNames(y))
    

    【讨论】:

      猜你喜欢
      • 2021-07-28
      • 2013-01-30
      • 2021-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-31
      • 2015-07-20
      • 2021-10-08
      相关资源
      最近更新 更多