Curso
Uma string é um valor de texto formado por um ou mais caracteres. Ela pode ser delimitada por aspas simples ('Isto é uma string') ou aspas duplas ("Isto também é uma string"). Porém, internamente, as strings em R são representadas entre aspas duplas.
Neste tutorial, você vai aprender sobre strings em R e veremos os seguintes tópicos:
- Primeiro, você vai conhecer as strings em R e as regras para trabalhar com strings em R.
- Depois, vamos abordar a concatenação de strings em R e outras propriedades importantes.
- Também veremos em detalhes como extrair e substituir trechos de uma string.
- Por fim, veremos como formatar strings, convertendo qualquer vetor de entrada em um formato bem apresentado.
Regras para strings em R
- A string que começa com aspas simples precisa terminar com aspas simples. Você pode incluir aspas duplas dentro dela e, usando a sequência de escape ('\'), a aspa simples também pode fazer parte da string.
Por exemplo: 'cars', 'merry"s' , 'merry\'s' são strings válidas em R.
- A string que começa com aspas duplas precisa terminar com aspas duplas. Você pode incluir aspas simples dentro dela e, usando a sequência de escape ('\'), a aspa dupla também pode fazer parte da string.
Por exemplo: "cars" , "merry's", "merry\"s" também são strings válidas em R.
Concatenação de strings
Concatenar strings significa unir ou combinar várias strings.
A sintaxe para concatenar strings em R é:paste(..., sep = "",collapse = NULL)paste0(..., collapse = NULL)
Os argumentos de paste indicam:
- '...' - Um ou mais caracteres ou objetos que serão convertidos em vetores de caracteres.
- 'sep' - O caractere usado como separador entre elementos.
- 'collapse' - Um separador opcional para colapsar o resultado em uma única string.
Por exemplo, considere o código abaixo, em que as variáveis contêm strings de caracteres:
my.var1 = "I"
my.var2 = "eat"
my.var3 = "rice"
print(paste(my.var1,my.var2,my.var3))
O código acima gera uma única string, como abaixo:
"I eat rice"
Agora, um exemplo em que as variáveis contêm vetores que são convertidos em uma única string:
my.var1 = c('Book','Copy')
my.var2 = c('Pen','Chair')
print(paste(my.var1,my.var2,sep=" ",collapse="-"))
O código acima produz a seguinte saída:
"Book Pen-Copy Chair"
Nesse caso, a saída inclui um '-' entre Pen e Copy por causa do argumento collapse, que define a separação entre dois vetores diferentes. Já o sep inclui um espaço (' '), separando os itens individualmente.
Vamos ver um exemplo com paste0()
paste0() usa, por padrão, sep = '' (sem espaço) e é útil quando você quer eficiência e nenhum separador.
state.name <- paste0('Mary','l','and')
print(state.name)
A saída do código acima está abaixo: todos os caracteres são unidos em um só, sem espaço definido por sep.
"Maryland"
Encontrando o comprimento
nchar(char,type, allowNA,keepNA) - Retorna o número total de caracteres em um vetor.
nzchar(char) - Retorna TRUE se x não é vazio e FALSE se for uma string vazia.
Os argumentos indicam:
- char - Um vetor de caracteres.
- type - Um dentre três tipos: "width", "chars" ou "bytes".
- allowNA - Lógico, padrão FALSE; se o resultado não puder ser calculado, não gera erro e retorna NA.
- keepNA - Lógico, padrão FALSE; quando TRUE, trata valores ausentes de forma a mapeá-los conforme a documentação (nzchar() retorna TRUE em certos casos envolvendo ausentes).
No exemplo abaixo, determinamos o comprimento de um vetor de caracteres:
my.char = nchar("hello")
print(my.char)
O exemplo acima retorna '5' como saída, pois há cinco caracteres no vetor.
Para o uso de nzchar(), veja o código abaixo:
new.char = nzchar("monkey")
print(new.char)
O código acima retorna o valor lógico 'TRUE' porque 'new.char' não é uma string vazia.
my.char = nzchar("")
print(my.char)
O código acima retorna o valor lógico 'FALSE' porque 'my.char' é uma string vazia.
Convertendo para maiúsculas e minúsculas
toupper(char) - Converte todos os caracteres para maiúsculas.
tolower(char) - Converte todos os caracteres para minúsculas.
Exemplo para converter em maiúsculas:
my.var = toupper("I'm changed to upper case")
print(my.var)
O código acima gera a saída abaixo, em que cada caractere na variável 'my.var' foi convertido para maiúscula.
"I'M CHANGED TO UPPER CASE"
Exemplo para converter em minúsculas:
my.var = tolower("I'm changed to lower case")
print(my.var)
O código acima gera a saída abaixo, em que cada caractere na variável 'my.var' foi convertido para minúscula.
""i'm changed to lower case""
Extraindo e substituindo trechos de uma string
substr(char, start, stop): extrai ou substitui parte de uma string.
Os argumentos indicam:
- char - Uma string de caracteres.
- start - Um inteiro que especifica a posição inicial a ser retornada.
- stop - Um inteiro que especifica a posição final a ser retornada.
Veja um exemplo de extração de caracteres.
final.value <- substring('Remaining', 3, 9)
print(final.value)
No código acima, 'Remaining' é uma string cujo primeiro índice é 'R' (inteiro 1). O último caractere é 'g', com índice 9.
O código acima produz a saída onde o valor inicial 3 corresponde ao caractere ' m ' em 'Remaining'. Da mesma forma, os demais caracteres até o inteiro 9 (inclusivo), correspondendo a 'g', são impressos.
"maining"
Agora, um exemplo em que os caracteres são substituídos.
y = "Remaining"
substring(y, 3, 5) <- "der"
print(y)
O código acima mostra a saída na qual o intervalo de 3 a 5 em y é substituído por 'der'.
"Rederning"
substring(char, first, last = 1000000L): extrai ou substitui parte de uma string.
Os argumentos indicam:
- char - Uma string de caracteres.
- first - Um inteiro que especifica a primeira posição a ser retornada.
- last - Um inteiro que especifica a última posição a ser retornada, com valor padrão 1000000L.
my.value <- substring('Remaining', 3, 8)
print(my.value)
O código acima produz a saída em que o valor inicial 3 corresponde ao caractere ' m ' em 'Remaining'. Os demais caracteres até o inteiro 8 (inclusivo), cujo caractere correspondente é 'n', são impressos.
"mainin"
Outro exemplo de substituição de caracteres:
y = "newcharacter"
substring(y, 6,9) <- "???"
print(y)
No código acima, o intervalo de 6 a 9 em y é substituído por '???'.
"newch???cter"
Formatando strings
format(char,width,scientific,justify,nsmall,digits): converte um vetor de inteiros e/ou caracteres para um formato amplamente utilizado.
Os argumentos indicam:
- char - Pode ser um vetor de inteiros ou de caracteres.
- width - Largura mínima da string produzida.
- scientific - Padrão FALSE; use TRUE para notação científica.
- justify - Padrão none; pode alinhar strings à "right", "left" ou "center".
- nsmall - Número total de casas após a vírgula decimal.
- digits - Número total de dígitos considerados antes e depois da vírgula.
Exemplo de formatação em notação científica:
my.var <- format(c(2, 19.267), scientific = TRUE)
print(my.var)
O código acima gera a saída em notação científica (exponencial):
"2.0000e+00" "1.9267e+01"
A saída "1.9267e+01" = 1,9267 × 10 (à potência 1) = 1,9267 × 10 = 19,267.
Exemplo de formatação usando nsmall:
my.var <- format(92.56656577, nsmall = 6)
print(my.var)
O código acima gera a saída abaixo, com 6 casas decimais.
"92.566565"
Exemplo de formatação usando digits:
my.var <- format(102.848793834, digits = 7)
print(my.var)
O código acima gera a saída abaixo, em que o total de dígitos considerados (antes e depois da vírgula) é 7.
"102.8488"
São incluídos sete dígitos; o último deveria ser 7, mas, como o dígito anterior (9) é maior que 7, ocorre arredondamento para 8.
Exemplo de formatação com alinhamento à direita:
my.var <- format('Running', justify = 'r',width = 9)
print(my.var)
O código acima gera a saída abaixo, onde 'Running' é alinhado à direita com espaçamento definido por width.
" Running"
Exemplo de formatação com alinhamento centralizado:
my.var <- format('Running', justify = 'c',width = 12)
print(my.var)
O código acima gera a saída abaixo, onde 'Running' é centralizado, com espaços à esquerda e à direita.
" Running "
Parabéns
Parabéns, você chegou ao fim deste tutorial!
Você aprendeu sobre strings em R: regras, concatenação, propriedades essenciais, extração e substituição de trechos e formatação de strings.
Se quiser aprender mais sobre R, faça o curso Introduction to R da DataCamp.
Confira também nosso tutorial Data Types in R.