2.2 Operações Matemáticas com Vetores

Todas as operações aplicadas a um vetor são aplicadas a cada um de seus elementos:

meuvetor <- 1:5 # uma sequencia de 1 a 5
mv2 <- meuvetor * 3 # uma sequencia onde cada valor de meuvetor foi multiplicado por 3
mv2
## [1]  3  6  9 12 15
mv2 <- meuvetor / 3 # uma sequencia onde cada valor de meuvetor foi divido por 3
mv2
## [1] 0.3333333 0.6666667 1.0000000 1.3333333 1.6666667
# se usar uma função matemática com um vetor ela afetará cada elemento indivualmente
meuvetor <- c(49, 25, 16, 4, 1)
sqrt(meuvetor) # raiz quadrada de cada elemento em meuvetor
## [1] 7 5 4 2 1

Operações com dois ou mais vetores são pareadas. Se os vetores têm o mesmo comprimento (mesmo número de elementos), então a operação é feita par a par, na ordem em que os elementos aparecem no vetor:

v1 <- c(1, 5, 10, 15)
v2 <- c(2, 4, 8, 16)
v1 + v2 # soma dos valores individuais e pareados
## [1]  3  9 18 31
v1 * v2
## [1]   2  20  80 240
v1^v2
## [1] 1.000000e+00 6.250000e+02 1.000000e+08 6.568408e+18

REGRA DA RECICLAGEM - se os vetores não têm o mesmo comprimento (mesmo número de elementos), então a operação é feita par a par, mas o vetor mais curto é reciclado, i.e. os elementos do vetor mais curto são repetidos sequencialmente até que a operação seja aplicada a todos os elementos do vetor mais longo (o R dará uma aviso quando a operação envolver vetores de tamanhos diferentes, pois às vezes não é isso que queremos).

A mais simples operação para entender a regra da reciclagem é a operação entre um vetor longo e um vetor atômico de um único valor:

v1 <- c(1, 5, 10, 15) # vetor com 4 elementos
v2 <- 2 # vetor com 1 elemento
v1 * v2 # cada elemento de v1 é multiplicado pelo único valor do vetor2
## [1]  2 10 20 30

Mas a reciclagem se aplica em todos os casos de operação entre vetores de tamanhos diferentes:

v1 <- c(1, 5, 10, 15) # vetor com 4 elementos
v2 <- c(3, 2) # vetor com 2 elemento
v1 * v2 # os valores de v1 são multiplicados par a par pelos valores de v2. Como v2 tem apenas 2 elementos, eles são repetidos 1 vez
## [1]  3 10 30 30

Quanto temos vetores de tamanhos não múltiplos entre si, como por exemplo o objeto ob de tamanho 10 e o objeto oc de tamanho 3, o R executa a operação, porém retorna uma mensagem de alerta em que diz que o vetor de tamanho maior (ob) não é múltiplo do vetor de tamanho menor (oc):

ob <- rep(c(0, 1), each = 5)
oc <- 1:3
ob * oc
## Warning in ob * oc: longer object length is not a multiple of shorter object
## length
##  [1] 0 0 0 0 0 3 1 2 3 1