【问题标题】:Rename the same column for all excel files in a folder in R为R中文件夹中的所有excel文件重命名相同的列
【发布时间】:2020-02-14 19:17:43
【问题描述】:

我在一个文件夹中有多个 excel 文件,所以我想清理文件夹中的每个文件,然后将所有 excel 文件附加在一起。我想重命名所有 excel 文件的第一列,所以我使用以下代码:

filelist<- list.files(pattern="*.xlsx")
DF <- lapply(filelist,function(i) {
Fu <- read_excel(i, sheet="XX")
colnames(Fu[[i]])[1] <- "Column 1"})

但是,我收到一条错误消息:colnames&lt;-(*tmp*, value = "SCENARIO_KEY") 中的错误: 尝试在小于二维的对象上设置“colnames”。如何解决?谢谢。

【问题讨论】:

    标签: r excel


    【解决方案1】:

    lapply本身中,我们可以重命名。循环中的i 是'filelist' 的每个元素。它不能用于子集“Fu”。相反,我们可以根据索引直接对列进行子集化,因为“Fu”是每个 list 元素中的单个 data.frame

    DF <- lapply(filelist,function(i) {
              Fu <- read_excel(i, sheet="XX")
              colnames(Fu)[1] <- "Column 1"
              Fu
         })
    

    即使索引正确,当我们使用[[ 对data.frame 进行子集化以获取列时,它也会返回vector,并且向量有dim 或列名属性

    mtcars[[1]]
    

    vector

    并且执行分配会返回错误,因为 colnames 是 NULL

    colnames(mtcars[[1]])
    #NULL
    
    colnames(mtcars[[1]]) <- "new column"
    

    colnames&lt;-(*tmp*, value = "new column") 中的错误: 尝试在小于二维的对象上设置“colnames”

    【讨论】:

      猜你喜欢
      • 2013-04-24
      • 1970-01-01
      • 2016-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-04
      相关资源
      最近更新 更多