Iterare sui caratteri (strsplit
Fa parte della sezione Fondamenti del percorso R di Coddy. Lezione 65 di 78.
E se avessi bisogno di elaborare singolarmente ogni carattere di una stringa? A differenza dei vettori, in R non puoi scorrere direttamente i caratteri di una stringa. La funzione strsplit() risolve questo problema suddividendo una stringa in un vettore di caratteri.
La funzione strsplit() accetta due argomenti: la stringa da dividere e il separatore. Per dividere in singoli caratteri, usa una stringa vuota "" come separatore:
word <- "hello"
chars <- strsplit(word, "")[[1]]
print(chars)Output:
[1] "h" "e" "l" "l" "o"Nota il [[1]] alla fine. Questo perché strsplit() restituisce una lista e dobbiamo estrarre il primo elemento per ottenere il nostro vettore di caratteri. Una volta che hai i caratteri come vettore, puoi scorrerli usando le tecniche che hai già imparato:
word <- "R"
chars <- strsplit(word, "")[[1]]
for (char in chars) {
print(char)
}Output:
[1] "R"Questa tecnica è essenziale per attività come contare caratteri specifici, invertire stringhe o convalidare l'input carattere per carattere.
Sfida
FacileRiceverai una singola riga di input contenente una parola (ad es., programming).
Usa strsplit() per dividere la stringa in singoli caratteri:
- Dividi la parola di input in un vettore di caratteri
- Scorri ogni carattere del vettore
- Conta quante volte la lettera
"a"compare nella parola (distinguendo tra maiuscole e minuscole) - Stampa ogni carattere su una riga separata usando
print() - Dopo il ciclo, stampa il conteggio usando
cat()con il formato:Count of 'a': Xseguito da un carattere di nuova riga
Ad esempio, se l'input è:
bananaL'output dovrebbe essere:
[1] "b"
[1] "a"
[1] "n"
[1] "a"
[1] "n"
[1] "a"
Count of 'a': 3Spiegazione: La parola "banana" viene divisa nei caratteri c("b", "a", "n", "a", "n", "a"). Ogni carattere viene stampato e la lettera "a" compare 3 volte.
Provalo tu
# Leggi l'input
con <- file("stdin", "r")
word <- suppressWarnings(readLines(con, n = 1))
# Inizializza il contatore per la lettera 'a'
count_a <- 0
# TODO: Scrivi il tuo codice qui sotto
# 1. Usa strsplit() per dividere la parola in singoli caratteri
# 2. Scorri ogni carattere
# 3. Stampa ogni carattere usando print()
# 4. Conta quante volte compare 'a'
# Mostra il conteggio di 'a'
cat("Count of 'a': ", count_a, "\n", sep = "")Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti
4Operatori Parte 2
Operatori logici (AND, OR)Operatori logici Parte 2 (NOT)Ripasso - Logica sempliceLogica vettorializzata Parte 1Logica vettorializzata Parte 27Calcolatore per dividere il conto
Messaggio di benvenutoAcquisire input dell'utente10FizzBuzz con una variante
Panoramica del giocoLa funzione FizzBuzz13Vettori: argomenti avanzati
Slicing e indicizzazione dei vettoriIndicizzazione logicaAritmetica dei vettori e ricicloL’operatore %in%2Variabili e tipi di dati
Tipo di dato numericoTipo di dato interoTipo di dato carattereTipo di dato logicoControllo dei tipi di datoConvenzioni di denominazioneValori mancanti: NARiepilogo - Creazione di variabili8Cicli
Ciclo forCiclo whilebreaknext (continue)Riepilogo - FattorialeGenerazione di sequenze (seq, :)Cicli annidatiRiepilogo - Input dinamico3Operatori Parte 1
Operatori aritmeticiDivisione intera e moduloOperatori di assegnazioneRiepilogo - Matematica sempliceOperatori di confronto6I/O di base
Stampare l'outputcat per l'outputOutput con variabiliLeggere l'input con readline()Nozioni di base sulla conversione dei tipiRiepilogo - Calcolatore dell'etàRiepilogo - Vero o falso9Funzioni
Dichiarare una funzioneArgomenti della funzioneValori di ritornoRiepilogo - Funzione SigmaRiepilogo - Funzione di validazioneValori predefiniti dei parametri12Iterare sulle sequenze
Iterare sugli elementi dei vettoriUsare seq_along()Iterare sui caratteri (strsplitFunzioni di manipolazione delle stringheEsercitati da solo: Compilatore R online