You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改R管道代码以在合并工作表前修改数据列名?

问题解决

你的错误根源在于:excel_sheets()返回的是3个工作表的名称列表,你用set_names给它指定了4个名字,长度不匹配导致报错,而且这步操作本来就不是用来修改工作表内数据列名的。

要实现合并前修改每个工作表的列名,需要把列名修改的逻辑放在读取单个工作表的步骤里,也就是map_dfr的函数内部。修正后的代码如下:

library(purrr)
library(readxl)

file_path <- "Test.xlsx"
dfraw <- file_path %>% 
         excel_sheets() %>%
         map_dfr(.f = ~read_excel(path = file_path, sheet = .x) %>% 
                    set_names(c('A','B','C','D')),  # 在这里修改每个工作表的列名
                 .id = "Currency")

代码说明

  • 移除了原来错误的set_names行,因为它是给工作表名称向量命名,而非数据列。
  • 将set_names(c('A','B','C','D'))通过管道连接到read_excel之后,这样每个工作表被读取后,立刻将其4列数据重命名为指定的名称。
  • .id = "Currency"会保留原工作表名称作为第一列,用于区分不同工作表的数据来源。

内容的提问来源于stack exchange,提问作者sjedi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 14:46:02