O objecto mais básico do R para guardar dados é o vector. Um vector é uma estrutura de dados que permite armazenar um conjunto de valores do mesmo tipo (por exemplo números) sob um mesmo nome. Esses elementos podem depois ser acedidos individualmente usando um esquema de indexação que iremos descrever mais à frente. Este tipo de estrutura de dados é bastante útil quando pretendemos armazenar várias coisas relacionadas na memória do computador. Por exemplo, suponhamos que pretendemos guardar os lucros obtidos pela nossa empresa ao longo dos 12 meses do ano anterior. Em vez de termos 12 objectos diferentes, cada um guardando o lucro em cada mês, uma vez que são números relacionados uns com os outros, faz mais sentido guardá-los todos numa mesma estrutura de dados, que neste caso será um vector com 12 números. Em R, mesmo quando atribuímos um único número a um objecto (por exemplo fazendo x <- 45), estamos de facto a criar um vector de números com um único elemento.
Todos os vectores em R têm um modo e um tamanho. O modo determina o tipo de valores guardado no vector. Em R podemos ter vectores com modo character, logical, numeric e complex. Ou seja, podemos ter vectores para armazenar conjuntos de caracteres, valores lógicos (F ou T ou FALSE ou TRUE)4, números, e números complexos. O tamanho de um vector é o número de elementos que ele contém, e pode ser obtido com a função length().
Na maioria das situações vamos criar vectores com mais do que um elemento. Para isso precisamos de usar a função c() para indicar ao R os elementos que formam o vector separando-os por vírgulas,
> v <- c(4,7,23.5,76.2,80) > v [1] 4.0 7.0 23.5 76.2 80.0 > length(v) [1] 5
Todos os elementos de um vector têm que ser do mesmo tipo (modo). Caso tentemos criar um vector com elementos de tipo diferente o R vai forçá-los a ser do mesmo tipo, alterando-os. Vejamos um exemplo disso,
> v <- c(4,7,23.5,76.2,80,"rrt") > v [1] "4" "7" "23.5" "76.2" "80" "rrt"
Porque um dos elementos do vector era do tipo caracter, o R passou todos os outros (que eram números) para o tipo caracter, gerando assim um vector de conjuntos de caracteres (strings). Isto quer dizer que por exemplo o primeiro elemento desse vector é a string ``4'' e não o número 4, o que tem como consequência, por exemplo, não podermos usar este elemento numa expressão numérica.
As strings em R são conjuntos de caracteres englobados por aspas ou plicas,
> w <- c("rrt",'ola','isto e uma string') > w [1] "rrt" "ola" "isto e uma string"
Todos os vectores podem ter um elemento especial que é o NA. Este valor representa um valor desconhecido. Por exemplo, se temos os lucros trimestrais de uma empresa guardados num vector, mas por alguma razão desconhecemos o seu valor no terceiro trimestre, poderíamos usar a seguinte instrução para criar esse vector,
> lucros <- c(234000,245000,NA,124500) > lucros [1] 234000 245000 NA 124500
Como já foi mencionado anteriormente, os elementos de um vector podem ser acedidos através de um índice. Na sua forma mais simples este índice é um número indicando o elemento que pretendemos aceder. Esse número é colocado entre parênteses rectos a seguir ao nome do vector,
> lucros[2] [1] 245000
Usando esta forma de aceder aos elementos individuais de um vector podemos alterar o conteúdo de um elemento particular de um vector,
> lucros[3] <- 45000 > lucros [1] 234000 245000 45000 124500
O R permite-nos criar vectores vazios usando a função vector(),
> k <- vector()
O tamanho de um vector já existente pode ser alterado atribuindo mais elementos a índices até agora inexistentes,
> k[3] <- 45 > k [1] NA NA 45
Repare que os dois primeiros elementos do vector k, que anteriormente era um vector vazio, ficaram com o valor NA ao colocarmos o valor 45 no terceiro elemento.
Para diminuirmos o tamanho de um vector podemos usar a instrução de atribuição. Por exemplo,
> v <- c(45,243,78,343,445,645,2,44,56,77) > v [1] 45 243 78 343 445 645 2 44 56 77 > v <- c(v[5],v[7]) > v [1] 445 2
Através do uso de formas de indexação mais poderosas que iremos explorar na Secção 1.8 vamos conseguir eliminar mais facilmente elementos particulares de um vector.