Além dos tipos de variáveis mais conhecidos (character, interger, boolean), a linguagem R também suporta outros tipos de dados, a qual podemos chamar de tipos complexos, sendo eles:
- Vetores (vector)
- Matrizes (matrix)
- Fatores (factor)
- Listas (list)
- Data frames (data frames)
Vetores
Tradicionamento igual à outras linguagens de programação, o vetor também é um objeto em R, a qual deve ter o mesmo tipo de dado para todas as suas posições.
É possível criar um vetor de objetos através do comando c() [c abre e fecha parenteses]
Alguns exemplos de criação de um vetor
De numéricos
> vetor <- c(0,1,2,3,4,5,6,7,8,9,10); vetor [1] 0 1 2 3 4 5 6 7 8 9 10
> vetor2 <- c(0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5); vetor2 [1] 0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5
Além dos vetores de conteúdo numérico, é possível fazer vetores com os outros tipos de dados, como valores lógicos:
>vetorLogico <- c(TRUE, FALSE, TRUE, FALSE, TRUE, FALSE); vetorLogico [1] TRUE FALSE TRUE FALSE TRUE FALSE > vetorLogico2 <- c(T, F, T, F, T, F); vetorLogico2 [1] TRUE FALSE TRUE FALSE TRUE FALSE
Valores caracteres:
> vetorCaracter <- c("A","b","C","d","E"); vetorCaracter [1] "A" "b" "C" "d" "E" > vetorCaracter2 <-c("Ana","Pedro","Maria","Joao","José"); vetorCaracter2 [1] "Ana" "Pedro" "Maria" "Joao" "José"
Valores inteiros (deixando explicito com a letra L):
> vetorInteiro <- c(1L, 2L, 3L, 4L, 5L); vetorInteiro [1] 1 2 3 4 5 > vetorInteiro2 <- c(1L, 10L, -20L, 0L, -10L); vetorInteiro2 [1] 1 10 -20 0 -10
Valores de objetos complexos:
> vetorCOmplexo <- c(10+0i, 20+1i, 30+2i); vetorCOmplexo [1] 10+0i 20+1i 30+2i
Sequências de numeração
Além dessas criações tradicionais, a linguagem R entende que o operador : (dois pontos) pode criar uma sequencia de valores, colocando um número inicial e o número final.
> 1:5 [1] 1 2 3 4 5 > 10:5 [1] 10 9 8 7 6 5 > -5:5 [1] -5 -4 -3 -2 -1 0 1 2 3 4 5
Outras formas de se criar sequencias, podem ser feitas atrvés dos exemplos:
> 0.5:10 [1] 0.5 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5
Colocando a sequencia do maior para o menor, o R consegue identificar que a sequencia precisa ser criada em ordem invertida:
> 10:1 [1] 10 9 8 7 6 5 4 3 2 1
O comando seq()
Até o modo visto, a sequencia era cria conforme critérios do R. É possível também criarmos sequencias, colocando o passo das sequencias, através do comando seq(). Como é um recurso menos utilizado, a sintaxe torna-se um pouco mais verbosa:
> seq(from=1, to=10, by=2) [1] 1 3 5 7 9
Como é a sequencia padrão do comando seq, é possível escrever o comando simplificado (porém não recomendado)
> seq(1,10,2) [1] 1 3 5 7 9
É possível escrever o comando passando o nome dos parametros (em qualquer ordem):
> seq(to=20, by=2, from=1) [1] 1 3 5 7 9 11 13 15 17 19
Tanbém podemos fazer com que seja preenchidos a quantidade desejada de sequencia, sem passar o número fim pre-fixado. No caso abaixo, foi a sequencia foi iniciada em 2, com o passo de 2 em 2, preenchendo a sequencia de 10 números.
> seq(from=2, by=2, length.out=10) [1] 2 4 6 8 10 12 14 16 18 20
O comando rep()
Além das sequencias de auto-incremento visto anteriormente, é possível utilizar a função de replicação, através do comando rep(). Uma observação importante é que só podemos utilizar a variável x para ser atribuído os valores.
> rep(x=1, times=10) [1] 1 1 1 1 1 1 1 1 1 1
Podemos criar um vetor com diferentes valores e pedir para ser replicado 2 vezes
> rep(x=c("a","b","c"), times=2) [1] "a" "b" "c" "a" "b" "c"
Ainda há possibilidade de ser criado um vetor com diferentes valores, ser replicado 3 vezes, com repetição dos elementos a cada duas vezes
> rep(x=c("a","b","c"), times=3, each =2) [1] "a" "a" "b" "b" "c" "c" "a" "a" "b" "b" "c" "c" "a" "a" "b" "b" "c" "c"