Como aplicar funções em linhas e colunas em R

Em R, você pode usar o aplicar()

função para aplicar uma função sobre cada linha ou coluna de uma matriz ou dados do quadro. Isto apresenta algumas oportunidades muito útil.

Contagem em R usando o aplicar função

Imagine que você contou os pássaros em seu quintal em três dias diferentes e armazenadas as contagens em uma matriz como este:

> contagens lt; - matriz (c (3,2,4,6,5,1,8,6,1), ncol = 3)> COLNAMES (contagens) lt; - c ( 'pardal', 'pomba', 'corvo')> countssparrow pomba corvo [1], 368 [2], 256 [3], 411

Cada coluna representa uma espécie diferente, e cada linha representa um dia diferente. Agora você quer saber o número máximo por espécie em um determinado dia. Você poderia construir uma para loop para fazê-lo, mas utilizando aplicar(), você fizer isso em uma única linha de código:

> Aplicar (contagens, 2, no máximo) sparrowdovecrow4 6 8

o aplicar() função retorna um vetor com o máximo de cada coluna e convenientemente usa os nomes de coluna como nomes para este vector também. Se R não encontrar nomes para a dimensão sobre a qual aplicar() é executado, ele retorna um objeto não identificado em seu lugar.

Vamos dar uma olhada em como isso aplicar() função funciona. Nas linhas de código anterior, você usou três argumentos:

  • O objecto em que a função tem que ser aplicada: Neste caso, é a matriz contagens.

  • A dimensão ou índice sobre a qual a função tem de ser aplicado: O número 1 significa na linha, eo número 2 significa coluna-wise. Aqui, aplicar a função ao longo das colunas. No caso de matrizes tridimensionais mais, este índice pode ser maior do que 2.

  • O nome da função que tem de ser aplicada: Você pode usar aspas em torno do nome da função, mas você não tem que. Aqui, nós aplicamos a função max. Note-se que não há parênteses necessários após o nome da função.

o aplicar() função divide a matriz em fileiras. Lembre-se que se você selecionar uma única linha ou coluna, R, por padrão, simplificar o que, para um vetor. o aplicar() função, em seguida, usa esses vetores, um por um como um argumento para a função especificada. Assim, a função de aplicado tem de ser capaz de lidar com os vectores.

Adicionar argumentos extras para o aplicar função

Vamos voltar ao nosso exemplo da seção anterior: Imagine que você não olhar para as pombas no segundo dia. Isto significa que, para esse dia, você não tem quaisquer dados, então você tem que definir esse valor para N / D como isso:

> contagens [2, 2] lt; - NA

Se você aplicar o max função nas colunas desta matriz, você recebe o seguinte resultado:

> Aplicar (contagens, 2, max) sparrowdovecrow4 NA 8

Isso não é o que você quer. A fim de lidar com os valores em falta, você precisa passar o argumento na.rm ao max na função aplicar() ligar para (ver Capítulo 4). Felizmente, isso é facilmente feito em R. Você apenas tem que adicionar todos os argumentos extras para a função como argumentos extra do aplicar() chamar, como este:

> Se candidatar (contagens, 2, max, na.rm = TRUE) sparrowdovecrow4 6 8

Você pode passar quaisquer argumentos que você deseja para a função na aplicar() chamar apenas adicionando-os entre os parênteses após os três primeiros argumentos.

menu