R调用tidyr::extract()拆分列出现regex及sep参数报错该如何解决
错误原因
- 参数名误用:
tidyr::extract()用于匹配分组的参数为regex,而非sep,sep是同包separate()函数的参数,你传入的sep参数被识别为未使用的无效参数,同时因为未传入有效的regex参数,函数无法识别到匹配分组,因此触发双报错。 - 列名不匹配:你读取的Excel列名为
State,代码中传入的列名写为States,多了末尾的s,参数修正后仍会因找不到对应列触发报错。 - 正则匹配范围不全:部分美国州名包含空格(例如New York、New Jersey),你原本写的
[a-zA-Z]+仅能匹配单个无空格的单词,遇到多单词州名时会出现截断,匹配结果不符合预期。
修正后代码
library(readxl) library(tidyr) library(dplyr) df <- read_xlsx("States.xlsx") # 正则规则:匹配两位数字为第一组,剩余所有字符为第二组作为州名 df %>% extract(State, c("编号", "州名"), regex = "(\\d{2}) (.*)")
内容的提问来源于stack exchange,提问作者Adam Marcik
相关产品推荐
相关产品推荐

