R (linguagem de programação)/Objetos
Um objeto é qualquer coisa que pode ser associado (e armazenado) em uma variável.
As variáveis em R não são predefinidas; elas assumem o tipo do objeto que for atribuído a elas.
Assim, uma instrução do tipo:
- x <- 1
atribui a x o valor (inteiro) 1, e é perfeitamente válido reatribuir:
- x <- 2.5
- x <- NULL
Aqui, NULL é a variável vazia. x <- NULL não destrói x (como pode ser visto escrevendo-se exists("x") - que retorna TRUE), mas faz x ter um valor que não é nada.
Os principais tipos de objeto são:
- Vetores: uma lista de elementos, sendo todos eles NULL, raw, lógico, inteiro, real, complexo, string, lista ou expressão. Caso a lista seja criada com uma mistura destes tipos, os mais simples serão convertidos para os mais complexos.
- Matrizes: semelhante a vetores, mas em duas dimensões.
- Arrays: semelhantes a matrizes, mas podem ter mais dimensões.
- Listas: semelhante a vetores, mas seus elementos podem ser de tipos diferentes - inclusive outras listas.
- Funções: uma função é um objeto como qualquer outro - pode-se inclusive definir funções anônimas, como nas linguagens funcionais.
Estes tipos serão vistos mais adiante:
- Fatores: parecido com vetores, mas incluem níveis.
- Dataframes: semelhante a matriz, mas com alguma estrutura a mais.
- Classes: usadas na programação orientada a objetos.
Vetores
editarUm vetor é uma lista de elementos sendo todos do mesmo tipo.
A função c
editarA função que cria vetores a partir de escalares (ou vetores) é c:
> x <- c(1, 2, 3)
cria uma variável x do tipo vetor (de inteiros) com três elementos.
Estes elementos são numerados a partir do um (como em Basic, Pascal, etc) e não a partir do zero (como em C, C++, etc):
> x[1] [1] 1
Deve-se notar que não existe diferença entre um escalar e um vetor de dimensão um:
> y <- 1 > y [1] 1
Este é um cuidado que deve ser tomado sempre ao trabalhar-se com vetores e matrizes: sempre que uma dimensão se torna um, esta dimensão é colapsada.
A função c pode ser usada para concatenar vetores:
> x <- c(c(1, 2), c(10, 11)) > x [1] 1 2 10 11
Criação de vetores vazios
editarBasta declarar o tipo e colocar o tamanho entre parêntesis.
Exemplos:
> numeric(5) # vetor de 5 zeros numéricos > integer(3) # vetor com 3 zeros inteiros
rep
editarrep repete um elemento n vezes:
> x <- rep(0.5, 10) > x [1] 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5
rep também pode ser usado para repetir um vetor:
> x <- rep(c(1,2), 3) > x [1] 1 2 1 2 1 2
rep também pode ser usado para repetir vetorialmente. Isto é melhor explicado com um exemplo:
> x <- rep(c(10, 11), c(2, 3)) > x [1] 10 10 11 11 11
Neste exemplo, o primeiro elemento da repetição (2) foi aplicado ao primeiro exemplo do vetor (10), e o segundo elemento da repetição (3) ao segundo elemento do vetor (11).
seq
editarseq cria um vetor que é uma sequência de números. Quando o passo é um, pode-se usar :. Exemplos:
> seq(3, 5) > seq(3, 15, by=2) > 1:10 > (-10):(-5) # cuidado com os parênteses! > 6:2 > seq(1, 1000, length=10) > seq(1, 1000, length=9) # repare que a sequência assume valores reais e não inteiros