Dividere e unire
Fa parte della sezione Logica e flusso del percorso R di Coddy. Lezione 3 di 64.
strsplit(x, split) divide una stringa in corrispondenza di ogni separatore. Restituisce una lista con un vettore di caratteri per ogni stringa di input, quindi usa [[1]] per ottenere i componenti di una singola stringa.
csv <- "red,green,blue"
parts <- strsplit(csv, ",")[[1]]
print(parts)
print(length(parts))Output:
[1] "red" "green" "blue"
[1] 3paste() funziona al contrario. Con collapse, unisce gli elementi di un vettore in un'unica stringa, inserendo il testo collapse tra di essi. sep viene inserito tra gli argomenti, elemento per elemento.
words <- c("one", "two", "three")
print(paste(words, collapse = "-"))
print(paste(words, 1:3, sep = "_"))Risultato:
[1] "one-two-three"
[1] "one_1" "two_2" "three_3"Il testo inserito spesso contiene spazi intorno ai separatori. trimws() rimuove gli spazi all'inizio e alla fine di ogni elemento:
raw <- " apples , pears,plums "
items <- trimws(strsplit(raw, ",")[[1]])
print(items)
print(paste(rev(items), collapse = " | "))Output:
[1] "apples" "pears" "plums"
[1] "plums | pears | apples"strsplit() su un vettore restituisce un elemento della lista per ogni stringa, quindi ogni riga di input mantiene i propri elementi:
lines <- c("a,b", "c,d,e")
parts <- strsplit(lines, ",")
print(length(parts))
print(parts[[2]])Output:
[1] 2
[1] "c" "d" "e"Sfida
FacileCompleta hashtags(line). La riga contiene tag separati da virgole, eventualmente con spazi intorno. Restituisci un'unica stringa con ogni tag preceduto da #, separati da singoli spazi: r, data ,stats diventa #r #data #stats.
Il codice fornito legge la riga e stampa il valore restituito.
Provalo tu
hashtags <- function(line) {
# Scrivi qui il tuo codice
line
}
# Codice di input/output fornito: lascialo così com'è
input <- suppressWarnings(readLines(file("stdin")))
cat(hashtags(input[1]), sep = "\n")
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Le stringhe in dettaglio
Sottostringhe con substr()Formattazione con sprintf()Dividere e unireRicerca nelle stringheSostituzione del testoRipasso - Generatore di nomi utente4Matrici
Creazione di matriciIndicizzazione delle matriciRiepiloghi di righe e colonneOperazioni aritmetiche con le matriciRipasso - Schema dei posti a sedere10Flusso di controllo avanzato
La funzione switch()ifelse() vettorialerepeat e breakFunzioni ricorsiveRiepilogo - Classificatore di voti2Ricerche chiave-valore
Ricerche in vettori con nomiControllare le chiaviAggiungere e rimuovere chiaviIterare sui nomiRiepilogo - Sportello titoli5Progetto - Registro dei voti
Aggiungere studentiRegistrare i voti8Ordinamento e raggruppamento
Ordinare i vettoriOrdinare in base a una chiaveRaggruppare con split()Riepiloghi dei gruppiRipasso - Classifica3Insiemi e conteggio
Valori univociOperazioni sugli insiemiTest di appartenenzaConteggio con table()Riepilogo - Ospiti dell’evento6Le funzioni come valori
Funzioni anonimePassare funzioniRestituire funzioniClosure con statoRiepilogo - Regole di sconto9DataFrame
Creare DataFrameColonne e righeFiltrare le righeAggiungere e ordinareRiepilogo - Report delle vendite12Progetto - Gestione delle spese
Registrare le speseSpesa totaleEsercitati da solo: Compilatore R online