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? Diferente 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. Assim que você tiver os caracteres como um vetor, poderá 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 (ex: programming).
Usando strsplit() para dividir a string em caracteres individuais:
- Divida a palavra de entrada em um vetor de caracteres
- Percorra cada caractere no vetor usando um loop
- Conte quantas vezes a letra
"a"aparece na palavra (case-sensitive) - 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 deve ser:
[1] "b"
[1] "a"
[1] "n"
[1] "a"
[1] "n"
[1] "a"
Count of 'a': 3Explicação: A palavra "banana" é dividida nos caracteres c("b", "a", "n", "a", "n", "a"). Cada caractere é impresso, e a letra "a" aparece 3 vezes.
Folha de consulta
Para dividir uma string em caracteres individuais, use strsplit() com uma string vazia "" como separador:
word <- "hello"
chars <- strsplit(word, "")[[1]]
print(chars)Saída:
[1] "h" "e" "l" "l" "o"O [[1]] extrai o primeiro elemento da lista retornada por strsplit(), resultando em um vetor de caracteres.
Você pode então percorrer os caracteres em um loop:
word <- "R"
chars <- strsplit(word, "")[[1]]
for (char in chars) {
print(char)
}Experimente você mesmo
# Ler entrada
con <- file("stdin", "r")
word <- suppressWarnings(readLines(con, n = 1))
# Inicializar 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 em um 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)Recapitulação - Lógica SimplesLógica Vetorizada Parte 1Lógica Vetorizada Parte 27Calculadora de Divisão de Conta
Mensagem de Boas-vindasObtendo a Entrada do Usuário10FizzBuzz com um Toque Especial
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 de Repetição
Laço ForLaço WhileBreakNext (Continue)Recapitulação - FatorialGeração de Sequências (seq, :)Laços AninhadosRecapitulação - Entrada Dinâmica3Operadores Parte 1
Operadores AritméticosDivisão Inteira e MóduloOperadores de AtribuiçãoRecapitulação - Matemática SimplesOperadores de Comparação6IO Básico
Saída com PrintCat para SaídaSaída com VariáveisLendo Entrada com readline()Básico 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âmetro Padrão12Iterando sobre Sequências
Iterando sobre Elementos de VetoresUsando seq_along()Iterando sobre Caracteres (strsplit)Funções de Manipulação de Strings