Como usar Operações Padrão em uma Matrix em R

Provavelmente a característica mais forte de R é a sua capacidade para lidar com as operações da matriz complexos em uma maneira fácil e otimizado. Porque grande parte das estatísticas resume-se a operações da matriz, é apenas natural que R adora mastigar esses números.

Ao falar sobre as operações em matrizes, você pode tratar quer os elementos da matriz ou toda a matriz como o valor que você operar. Essa diferença é muito clara quando se compara, por exemplo, transposição de uma matriz e adicionando um único número (ou escalar) A uma matriz.

Aquando da transposição, você trabalha com toda a matriz. Ao adicionar um escalar para uma matriz, que adiciona escalar para cada elemento da matriz.

Você adiciona um escalar a uma matriz simplesmente usando o operador de adição, +, como isso:

> First.matrix + 4 [, 1] [, 2] [, 3] [, 4] [1,] 5 8 11 14 [2,] 6 12 9 15 [3,] 7 10 13 16

Você pode usar todos os outros operadores aritméticos exatamente da mesma maneira de executar uma operação em todos os elementos de uma matriz.

A diferença entre as operações em matrizes e elementos torna-se menos clara se você falar sobre a adição de matrizes juntos. De facto, a adição de duas matrizes é a adição dos elementos que respondem. Então, você precisa ter certeza de ambas as matrizes têm as mesmas dimensões.

Vejamos outro exemplo: Digamos que você deseja adicionar 1 para a primeira linha, 2 para a segunda fila, e 3 para a terceira linha da matriz first.matrix. Você pode fazer isso através da construção de uma matriz second.matrix que tem quatro colunas e três filas e que possui 1, 2, e 3 como valores em primeiro, segundo e terceira filas, respectivamente.

O comando a seguir faz isso usando a reciclagem do primeiro argumento pela função de matriz:

> second.matrix lt; - matriz (1: 3, nrow = 3, Ncol = 4)

Com o operador de adição, você pode adicionar ambas matrizes em conjunto, como este:

> First.matrix + second.matrix [, 1] [, 2] [, 3] [, 4] [1,] 2 5 8 11 [2], 4 7 10 13 [3,] 6 9 12 15

Esta é a solução seu professor de matemática aprovaria se ela lhe pediu para fazer a adição de matrizes da primeira e segunda matriz. E ainda mais, se as dimensões das duas matrizes não são os mesmos, R irá reclamar e recusar-se a realizar a operação, como mostrado no exemplo a seguir:

> first.matrix + second.matrix [1: 3] Erro na first.matrix + second.matrix [, 1: 3]: matrizes não-moldáveis

Mas o que aconteceria se em vez de adicionar uma matriz, você adicionou um vetor? Dê uma olhada no resultado do seguinte código:

> First.matrix + 1: 3 [, 1] [, 2] [, 3] [, 4] [1,] 2 5 8 11 [2], 4 7 10 13 [3,] 6 9 12 15

Não somente R se queixam sobre as dimensões, mas recicla o vetor sobre os valores das matrizes. Na verdade, trata R a matriz como um vector, neste caso, simplesmente ignorando as dimensões. Assim, neste caso, você não usar adição de matrizes, mas (vectorized) simples adição.

Por padrão, R enche matrizes coluna-wise. Sempre R lê uma matriz, ele também lê coluna-wise. Isto tem implicações importantes para o trabalho com matrizes. Se você não ficar ciente disso, R pode morder-lhe na perna nastily.

menu