R循环导入多Excel文件并设置指定行作为表头问题求助
问题原因
你的代码里管道符的优先级处理错了——assign(...) %>% row_to_names(n) 会先执行assign函数,把未处理的原始表格赋值给变量,然后再把assign的返回值(不可见的NULL)传给row_to_names,等于根本没对读取的表格做表头修改操作。
修正方案
把读取和表头修改的逻辑放在assign的第二个参数里,或者分步写更清晰:
方案1:调整括号位置(紧凑写法)
library(janitor) library(readxl) files <- c(path19, path20, path21, path22) label <- c("def19","def20", "def21", "def22") n = 3 for (a in seq_along(files)) { assign(label[a], read_xlsx(files[a], sheet = "sheetname") %>% row_to_names(n)) }
方案2:分步赋值(可读性更强)
library(janitor) library(readxl) files <- c(path19, path20, path21, path22) label <- c("def19","def20", "def21", "def22") n = 3 for (a in seq_along(files)) { # 先读取并处理表头 temp_data <- read_xlsx(files[a], sheet = "sheetname") %>% row_to_names(n) # 再赋值给目标变量 assign(label[a], temp_data) }
两种方案都能让row_to_names正确作用于读取的Excel表格,把第3行设为表头。
内容的提问来源于stack exchange,提问作者beeflomein
相关产品推荐
相关产品推荐

