Respressione regolare: sostituire l'intero elenco delle stringhe con informazioni più specifiche

StackOverflow https://stackoverflow.com//questions/23048595

  •  21-12-2019
  •  | 
  •  

Domanda

Se ho dati con una variabile categoriale che presenta elementi come "Q7", "Q2", ecc., Come lo sostituisco con "7 Queen", "2 Queen", ecc.?

È stato utile?

Soluzione

Per gli antipasti, otterrai il massimo dalla possibilità di fare una domanda se includi anche il codice per quello che hai già provato.Questo detto ...

Forse non è il modo più efficace per risolvere questo problema per i set di dati di grandi dimensioni, ma questi due metodi sembrano funzionare bene solo per il tuo esempio.example(strsplit) ha una bella funzione di inversione di stringa che possiamo mettere in uso.

> 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"
.

Un altro modo sarebbe quello di utilizzare paste

> S <- paste0(strReverse(strg), "ueen")
> gsub("Q", " Q", S)
[1] "7 Queen" "2 Queen"
.

Altri suggerimenti

regex

(Q)(\d)
.

Sostituisci Regex

$2 Queen
.

Visualizzazione di espressione regolare

Debugx demo

Descrizione

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: Hai bisogno di uno di questi per ogni lettera

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top