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:
<- 1:5 # uma sequencia de 1 a 5
meuvetor <- meuvetor * 3 # uma sequencia onde cada valor de meuvetor foi multiplicado por 3
mv2 mv2
## [1] 3 6 9 12 15
<- meuvetor / 3 # uma sequencia onde cada valor de meuvetor foi divido por 3
mv2 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
<- c(49, 25, 16, 4, 1)
meuvetor 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:
<- c(1, 5, 10, 15)
v1 <- c(2, 4, 8, 16)
v2 + v2 # soma dos valores individuais e pareados v1
## [1] 3 9 18 31
* v2 v1
## [1] 2 20 80 240
^v2 v1
## [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:
<- c(1, 5, 10, 15) # vetor com 4 elementos
v1 <- 2 # vetor com 1 elemento
v2 * v2 # cada elemento de v1 é multiplicado pelo único valor do vetor2 v1
## [1] 2 10 20 30
Mas a reciclagem se aplica em todos os casos de operação entre vetores de tamanhos diferentes:
<- c(1, 5, 10, 15) # vetor com 4 elementos
v1 <- c(3, 2) # vetor com 2 elemento
v2 * 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 v1
## [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
):
<- rep(c(0, 1), each = 5)
ob <- 1:3
oc * oc ob
## 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