如何解决R语言merge合并Excel文件时if (quote) args报错问题
报错原因
- 问题出在
do.call()的参数传递逻辑:do.call()的第二个参数必须是目标函数所需全部参数组成的列表,你当前将待合并的数据框列表mba和关联键参数by分成了两个独立参数传入,第三个位置的参数被do.call()识别为逻辑类型的quote参数,你传入的是列表,因此触发类型不匹配报错。
修复方案
方案1:基础R解法(无需额外加载包)
调整do.call()的参数结构,将待合并数据框和关联键参数合并为同一个列表传入:
# 替换原错误的merge行即可 # 内连接:仅保留两个关联键完全匹配的观测 mba <- do.call(merge, c(mba, list(by = c("Office", "Machine")))) # 若需保留所有文件的全部观测(全连接),使用下方写法 # mba <- do.call(merge, c(mba, list(by = c("Office", "Machine"), all = TRUE)))
方案2:tidyverse体系解法(可读性更高)
你已经加载了tidyr,可搭配purrr包的reduce()函数实现多表合并,写法更简洁易懂:
# 先加载purrr包 library(purrr) # 内连接写法 mba <- reduce(mba, merge, by = c("Office", "Machine")) # 全连接写法 # mba <- reduce(mba, merge, by = c("Office", "Machine"), all = TRUE)
内容的提问来源于stack exchange,提问作者Ann16776094
相关产品推荐
相关产品推荐

