R Expresión regular: reemplace la lista completa de cadenas con información más específica
Pregunta
Si tengo datos con una variable categórica que tiene elementos como "Q7", "Q2"
, etc., ¿cómo lo reemplazo con "7 Queen", "2 Queen"
, etc.?
Solución
Para empezar, obtendrá el máximo provecho de hacer una pregunta si también incluye el código de lo que ya ha intentado.Dicho esto ...
Tal vez no la forma más eficiente de resolver este problema para grandes conjuntos de datos, pero estos dos métodos parecen funcionar bien en su ejemplo.example(strsplit)
tiene una buena función de reversión de cuerdas que podemos usar.
> strReverse <- function(x)
sapply(lapply(strsplit(x, NULL), rev), paste, collapse = "")
> strg <- c("Q7", "Q2")
> GS <- gsub("Q", strReverse(" Queen"), strg)
> strReverse(GS)
[1] "7 Queen" "2 Queen"
Otra forma sería usar paste
> S <- paste0(strReverse(strg), "ueen")
> gsub("Q", " Q", S)
[1] "7 Queen" "2 Queen"
Otros consejos
regex
(Q)(\d)
Reemplazar regex
$2 Queen
Descripción
1st Capturing group (Q)
Q matches the character Q literally (case insensitive)
2nd Capturing group (\d)
\d match a digit [0-9]
g modifier: global. All matches (don't return on first match)
i modifier: insensitive. Case insensitive match (ignores case of [a-zA-Z])
Nota: necesitaría uno de estos para cada letra
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow