如果在R中适用,请将第二个空格替换为\n



我有一个文本向量,比如说:

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+个空白字符

最新更新