【问题标题】:Change colname in R over multiple datasets在多个数据集上更改 R 中的 colname
【发布时间】:2019-02-03 05:21:15
【问题描述】:

我正在使用大约 10 个数据集,需要更改列名以匹配所有数据集,每个数据集包含相同数量的列。目前这就是我正在做的事情,但我知道必须有一种更简洁的方式来输入它。

第 1 周到第 10 周是我正在使用的数据集。

colnames(week1) <- c("Itemsinfolder", "Foldersize (KB)", "Foldersubfoldersize (KB)", "User", "Level1folder", "Level2folder", "Level3folder", "Level4folder", "Level5folder")

colnames(week2) <- c("Itemsinfolder", "Foldersize (KB)", "Foldersubfoldersize (KB)", "User", "Level1folder", "Level2folder", "Level3folder", "Level4folder", "Level5folder")

colnames(week3) <- c("Itemsinfolder", "Foldersize (KB)", "Foldersubfoldersize (KB)", "User", "Level1folder", "Level2folder", "Level3folder", "Level4folder", "Level5folder")

colnames(week4) <- c("Itemsinfolder", "Foldersize (KB)", "Foldersubfoldersize (KB)", "User", "Level1folder", "Level2folder", "Level3folder", "Level4folder", "Level5folder")

等等。到第 10 周

谢谢

【问题讨论】:

    标签: r loops dataset


    【解决方案1】:

    我们可以通过将数据集保存在 list 中并使用首选名称 ('vec') 的 vector 更改列名称来立即执行此操作。如果我们需要更改全局环境中的对象,请使用list2env(不过,最好保留在list中)

    lst <- lapply(mget(paste0("week", 1:10)), setNames, vec)
    list2env(lst, envir = .GlobalEnv)
    

    另一个选项是assignforloop

    wks <- paste0("week", 1:10)
    for(wk in wks) assign(wk, `names<-`(get(wk), vec))
    

    使用可重现的示例

    week1 <- data.frame(col1 = 1:5, col2 = 6:10)
    set.seed(24)
    week2 <- data.frame(col1 = rnorm(5), col2 = rnorm(5))
    wks <- paste0('week', 1:2)
    vec <- paste0("V", 1:2)
    for(wk in wks) assign(wk, `names<-`(get(wk), vec))
    

    数据

    vec <- c("Itemsinfolder", "Foldersize (KB)", "Foldersubfoldersize (KB)", "User", 
      "Level1folder", "Level2folder", "Level3folder", "Level4folder", "Level5folder")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-28
      • 2014-11-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多