如何修改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
相关产品推荐
相关产品推荐

