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.