我有一个文本向量,比如说:
vector <- c("20 DE NOVIEMBRE", "CENTRO", "EL ARENAL 4A SECCION", "IGNACIO ZARAGOZA", "JARDIN BALBUENA", "MOCTEZUMA 2A SECCION", "MORELOS", "PEON DE LOS BAOS")
如果存在的话,我想用特殊字符"来代替第二个空格;\n〃;。
我试过这个:
vector <- gsub(".* .*( ).*", "\n", vector)
但没用。
这是预期的结果:
c("20 DEnNOVIEMBRE", "CENTRO", "EL ARENALn4A SECCION", "IGNACIO ZARAGOZA", "JARDIN BALBUENA", "MOCTEZUMA 2AnSECCION", "MORELOS", "PEON DEnLOS BAOS")
我怎样才能拿到它?
一种方法,将sub
与捕获组一起使用:
vector <- sub("^(\S+) (\S+) ", "\1 \2n", vector)
vector
[1] "20 DEnNOVIEMBRE" "CENTRO" "EL ARENALn4A SECCION"
[4] "IGNACIO ZARAGOZA" "JARDIN BALBUENA" "MOCTEZUMA 2AnSECCION"
[7] "MORELOS" "PEON DEnLOS BAOS"
数据:
vector <- c("20 DE NOVIEMBRE", "CENTRO", "EL ARENAL 4A SECCION",
"IGNACIO ZARAGOZA", "JARDIN BALBUENA", "MOCTEZUMA 2A SECCION",
"MORELOS", "PEON DE LOS BAOS")
这里的正则表达式逻辑只是简单地说,捕获S+
给出的第一个和第二个单词,同时占用第一和第二空间。请注意,只有当输入实际上有第二个空格时,这才会匹配。然后,我们用相同的替换,但用n
换行来代替第二个空间。
您可以使用
vector <- c("20 DE NOVIEMBRE", "CENTRO", "EL ARENAL 4A SECCION", "IGNACIO ZARAGOZA", "JARDIN BALBUENA", "MOCTEZUMA 2A SECCION", "MORELOS", "PEON DE LOS BAOS")
sub("^\S+\s+\S+\K\s+", "n", vector, perl=TRUE)
R演示的输出:
[1] "20 DEnNOVIEMBRE" "CENTRO" "EL ARENALn4A SECCION"
[4] "IGNACIO ZARAGOZA" "JARDIN BALBUENA" "MOCTEZUMA 2AnSECCION"
[7] "MORELOS" "PEON DEnLOS BAOS"
正则表达式是^S+s+S+Ks+
(见演示(,它与匹配
^
-字符串的开头S+
-1+非空白s+
-1+空白S+
-1+非空白K
-匹配重置运算符丢弃迄今为止匹配的所有文本s+
-1+个空白字符