Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以用regexps创建一个向量吗?_R_Regex_Vector - Fatal编程技术网

我可以用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 with
mgsub::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="|"), ")$")