Iterando sobre caracteres (strsplit
Parte da seção Fundamentos do Journey de R da Coddy. Lição 65 de 78.
E se você precisar processar cada caractere em uma string individualmente? Ao contrário dos vetores, você não pode percorrer diretamente os caracteres de uma string em R. A função strsplit() resolve isso dividindo uma string em um vetor de caracteres.
A função strsplit() recebe dois argumentos: a string a ser dividida e o separador. Para dividir em caracteres individuais, use uma string vazia "" como o separador:
word <- "hello"
chars <- strsplit(word, "")[[1]]
print(chars)Saída:
[1] "h" "e" "l" "l" "o"Observe o [[1]] ao final. Isso ocorre porque strsplit() retorna uma lista, e precisamos extrair o primeiro elemento para obter nosso vetor de caracteres. Uma vez que você tenha os caracteres como um vetor, você pode iterar sobre eles usando as técnicas que já aprendeu:
word <- "R"
chars <- strsplit(word, "")[[1]]
for (char in chars) {
print(char)
}Saída:
[1] "R"Esta técnica é essencial para tarefas como contar caracteres específicos, inverter strings ou validar a entrada caractere por caractere.
Desafio
FácilVocê receberá uma única linha de entrada contendo uma palavra (por exemplo, programming).
Usando strsplit() para dividir a string em caracteres individuais:
- Divida a palavra de entrada em um vetor de caracteres
- Percorra cada caractere do vetor
- Conte quantas vezes a letra
"a"aparece na palavra (diferenciando maiúsculas de minúsculas) - Imprima cada caractere em sua própria linha usando
print() - Após o loop, imprima a contagem usando
cat()com o formato:Count of 'a': Xseguido por uma nova linha
Por exemplo, se a entrada for:
bananaA saída deverá ser:
[1] "b"
[1] "a"
[1] "n"
[1] "a"
[1] "n"
[1] "a"
Count of 'a': 3Explicação: a palavra "banana" é dividida em caracteres c("b", "a", "n", "a", "n", "a"). Cada caractere é impresso, e a letra "a" aparece 3 vezes.
Experimente você mesmo
# Ler a entrada
con <- file("stdin", "r")
word <- suppressWarnings(readLines(con, n = 1))
# Inicializar o contador para a letra 'a'
count_a <- 0
# TODO: Escreva seu código abaixo
# 1. Use strsplit() para dividir a palavra em caracteres individuais
# 2. Percorra cada caractere (loop)
# 3. Imprima cada caractere usando print()
# 4. Conte quantas vezes 'a' aparece
# Exibir a contagem de 'a'
cat("Count of 'a': ", count_a, "\n", sep = "")Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentos
4Operadores - Parte 2
Operadores lógicos (AND, OR)Operadores lógicos - Parte 2 (NOT)Revisão - Lógica simplesLógica vetorizada - Parte 1Lógica vetorizada - Parte 27Calculadora de Divisão da Conta
Mensagem de Boas-vindasObtendo a Entrada do Usuário10FizzBuzz com uma Reviravolta
Visão Geral do JogoA Função FizzBuzz2Variáveis e Tipos de Dados
Tipo de Dado NuméricoTipo de Dado InteiroTipo de Dado CaractereTipo de Dado LógicoVerificando Tipos de DadosConvenções de NomenclaturaValores Ausentes: NARecapitulação - Criação de Variáveis8Laços
Laço ForLaço WhileBreakNext (Continue)Revisão - FatorialGeração de Sequências (seq, :)Laços AninhadosRevisão - Entrada Dinâmica3Operadores - Parte 1
Operadores aritméticosDivisão inteira e móduloOperadores de atribuiçãoRevisão - Matemática simplesOperadores de comparação6Entrada e saída básicas
Imprimir saídacat para saídaSaída com variáveisLendo entrada com readline()Noções básicas de conversão de tiposRecapitulação - Calculadora de idadeRecapitulação - Verdadeiro ou falso9Funções
Declarando uma FunçãoArgumentos de FunçãoValores de RetornoRecapitulação - Função SigmaRecapitulação - Função de ValidaçãoValores de Parâmetros Padrão12Iterando sobre sequências
Iterando sobre elementos de vetoresUsando seq_along()Iterando sobre caracteres (strsplitFunções de manipulação de stringsPratique por conta própria: Compilador de R online