# Funzioni gsub() e sub() in R: sostituzione di stringhe e caratteri

Le funzioni `gsub()` e `sub()` in R sono facili da usare e combinabili con altre funzioni di R per eseguire **complesse manipolazioni dei testi**. Queste funzioni possono essere integrate direttamente in analisi dei dati e calcoli statistici.

## A cosa servono `gsub()` e `sub()` in R?

Le funzioni `gsub()` e `sub()` in R servono a **sostituire modelli all’interno di sequenze di caratteri**. La funzione `sub()`, abbreviazione dell’inglese “**substitute**”, consente di trovare la prima occorrenza di un dato modello in una sequenza di caratteri e di sostituirla con un’altra espressione. Si tratta quindi di una sostituzione singola. La funzione `gsub()`, invece, sta per “**global substitute**”. Questo metodo cerca tutte le occorrenze di un modello specificato all’interno di una stringa e le sostituisce globalmente con un’altra espressione.

Entrambe le funzioni sono molto utilizzate per la pulizia e la trasformazione dei dati. Il loro scopo principale è la rimozione di modelli indesiderati o l’adattamento di dati sotto forma di testo. Le funzioni `gsub()` e `sub()` in R svolgono quindi un compito fondamentale per la **manipolazione dei testi** in analisi statistiche o in applicazioni di apprendimento automatico in R. In questi campi è possibile utilizzare `gsub()` e `sub()` per estrarre determinati modelli oppure per trasformare i dati in un formato idoneo per l’analisi.

## La sintassi di `gsub()` e `sub()` in R

La sintassi di `gsub()` e `sub()` in R è piuttosto simile per entrambe le funzioni. Entrambi i metodi accettano i seguenti parametri:

- **pattern**: questo è il modello da cercare, sotto forma di stringa o di espressione regolare
- **replacement**: l’espressione che deve sostituire il modello trovato
- **x**: vettore o frame di dati (data frame) in cui eseguire la ricerca e la sostituzione

### La struttura di `gsub()` in R

```R
gsub(pattern, replacement, x)
```

### La sintassi fondamentale di `sub()` in R

```R
sub(pattern, replacement, x)
```

## Esempi pratici per `gsub()` in R

La scelta fra `sub()` e `gsub()` dipende dalle esigenze di sostituzione del modello. La particolarità `gsub()` in R è la possibilità di individuare e sostituire **tutte le occorrenze** di un modello.

### Rimozione di spazi vuoti

Ad esempio, con `gsub()` è possibile ripulire le stringhe eliminando gli spazi vuoti superflui.

```R
sentence <- "  Data Science  is  powerful.  "
clean_sentence <- gsub("\\s+", " ", sentence)
cat(clean_sentence)
```

Il risultato che otteniamo è il seguente:

```R
"Data Science is powerful."
```

L’espressione regolare `\\s+` corrisponde a uno o più spazi vuoti consecutivi e permette quindi di rimuovere efficacemente gli spazi dalla frase.

### Sostituzione di numeri di telefono

La funzione `gsub()` in R è un metodo pratico per **anonimizzare** o rimuovere dati sensibili, come i numeri di telefono.

```R
text <- "Contact us at 123-456-7890 for more information."
modified_text <- gsub("\\d{3}-\\d{3}-\\d{4}", "redacted phone number", text)
cat(modified_text)
```

Output:

```R
"Contact us at redacted phone number for more information."
```

In questo esempio utilizziamo l’espressione regolare `\\d{3}-\\d{3}-\\d{4}` per estrarre il numero di telefono e sostituire tutte le cifre nella stringa `text` con il segnaposto `"redacted phone number"`.

## Esempi di applicazione per `sub()` in R

Se desideri sostituire solo la **prima occorrenza** di un modello, utilizza la funzione `sub()`.

### Sostituzione di parole alla prima occorrenza

Ipotizziamo di avere una stringa con parole ripetute e di voler sostituire la prima parola:

```R
text <- "Data Science is powerful. Data Analysis is fun."
result_sub <- sub("Data", "Information", text)
cat(result_sub)
```

Otteniamo questo output:

```R
"Information Science is powerful. Data Analysis is fun."
```

La funzione `sub()` in R cerca il modello `"Data"` nel testo e sostituisce la prima occorrenza con il testo sostitutivo indicato `"Information"`.

### Sostituzione di numeri

La funzione `sub()` consente anche la sostituzione di numeri.

```R
numeric_text <- "The cost is $1000. Please pay by 01.02.2024."
result <- sub("\\d+", "2000", numeric_text)
cat(result)
```

Output:

```R
"The cost is $2000. Please pay by 01.02.2024."
```

L’espressione regolare `\\d+` corrisponde a una o più cifre, ma la funzione `sub()` sostituisce solo il primo gruppo di numeri incontrato nel testo.

Consiglio Ulteriori spiegazioni sulle funzioni di R, come [substring in R](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/r-substring/) o [rbind in R](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/r-rbind/) sono disponibili nella nostra Digital Guide.


This is a markdown version of: [https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/funzioni-sub-e-gsub-in-r/](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/funzioni-sub-e-gsub-in-r/) for AI/LLM consumption.