我可以用regexps创建一个向量吗?
我的数据看起来像这样:我可以用regexps创建一个向量吗?,r,regex,vector,R,Regex,Vector,我的数据看起来像这样: 412 U CA, Riverside 413 U British Columbia 414 CREI 415 U Pompeu Fabra 416 Office of the Comptroller of the Currency, US Department of the Treasury 417 Bureau of Economics, US Federal Trade Commission 418 U Carlos III de Madrid 419 U Bres
412 U CA, Riverside
413 U British Columbia
414 CREI
415 U Pompeu Fabra
416 Office of the Comptroller of the Currency, US Department of the Treasury
417 Bureau of Economics, US Federal Trade Commission
418 U Carlos III de Madrid
419 U Brescia
420 LUISS Guido Carli
421 U Alicante
422 Harvard Society of Fellows
423 Toulouse School of Economics
424 Decision Economics Inc, Boston, MA
425 ECARES, Free U Brussels
c("^Alabama "|" Alabama "|" Alabama,"|",Alabama "| " Alabama$", "^California "[....])
我需要对这些数据进行地理编码,以便获得每个特定机构的坐标。为了做到这一点,我需要把所有州的名字都拼出来。同时,我不希望像“ECARES”这样的首字母缩略词被转换成“ECaliforniaRES”
我一直在考虑将state.abb和state.name向量转换为正则表达式的向量,这样state.abb看起来就像这样(使用阿拉巴马州和加利福尼亚州作为州1和州2):
state.name向量是这样的:
412 U CA, Riverside
413 U British Columbia
414 CREI
415 U Pompeu Fabra
416 Office of the Comptroller of the Currency, US Department of the Treasury
417 Bureau of Economics, US Federal Trade Commission
418 U Carlos III de Madrid
419 U Brescia
420 LUISS Guido Carli
421 U Alicante
422 Harvard Society of Fellows
423 Toulouse School of Economics
424 Decision Economics Inc, Boston, MA
425 ECARES, Free U Brussels
c("^Alabama "|" Alabama "|" Alabama,"|",Alabama "| " Alabama$", "^California "[....])
我希望可以使用mgsub函数将modified state.abb向量中的所有表达式替换为modified state.name向量中的相应条目
但是,出于某种原因,似乎不可能将regexp放入向量中:
test<-c(^AL, ^AB)
Error: unexpected '^' in "test<-c(^"
我们可以利用
状态.abb
向量
和通过折叠
和
将其粘贴在一起
pat1 <- paste0("\\b(", paste(state.abb, collapse="|"), ")\\b")
您可以找到所有带有[^a-zA-Z]([a-Z]{2})[^a-zA-Z]
的两个字母缩写,您需要使用$1
。至于将它们翻译成完整的州名,你需要编程逻辑。好吧,我想我明白了要点,但是为什么第一个单词boundry用一个反斜杠表示,第二个单词用两个反斜杠表示?而且,这似乎与gsub或mgsub不起作用:/@Magnus withmgsub::mgsub
mgsub(“AL是最好的”,c(\\bAL\\b),“\\bAL\\b”)、c(“阿拉巴马州”、“阿拉斯加州”)#[1]“阿拉巴马州是最好的”
好的,我不得不用state.name向量替换pat2,因为我得到了像^(California)$这样的条目,但除此之外,这似乎是可行的。谢谢你抽出时间@在替换中,如果您添加^$
,它将从字面上替换它。我假设这是另一套模式
pat1 <- paste0("\\b(", paste(state.abb, collapse="|"), ")\\b")
pat2 <- paste0("^(", paste(state.name, collapse="|"), ")$")