[R-es] Función para hacer productos de dos listas (sin NA)

r-help-es en mmmmarascio.xyz r-help-es en mmmmarascio.xyz
Lun Abr 20 19:04:07 CEST 2015


> Date: Sun, 19 Apr 2015 10:27:02 +0200
> From: Gemma Ruiz-Olalla <gemma.ruizolalla en gmail.com>
> To: r-help-es en r-project.org
> Subject: [R-es] Función para hacer productos de dos listas (sin NA)
> Message-ID:
>         <CAALuvnX_EaPAJ2xN2efAcYwSbUwUVyFYp4oJV5FgRM9YoEM8Vg en mail.gmail.com>
> Content-Type: text/plain; charset="utf-8"
> 
> Buenos días,
> 
> Necesitamos encontrar una función que haga el producto (valor por valor) de
> dos listas, pero que nos permita no tener en cuenta los NA. Por ejemplo,
> igual que sum() permite añadir como parámetro el na.rm=T, la función que
> buscamos nos debería permitir también añadir este parámetro. Hemos
> encontrado el prod() pero sólo nos da un único valor y necesitamos el
> producto de cada valor de la lista por la otra (necesitamos una lista de
> valores resultantes).
> 
> ¿Alguien nos puede ayudar?

Multiplicar un número por NA devuelve NA, sin error.
 
(lista.1 <- list(1:10, 10:1, rep(c(NA, 1:5), 25)))
(lista.2 <- list(10:1, 1:10, 2))
mapply(`*`, lista.1, lista.2)

Esto conlleva un aviso si las listas mismas no son igual de largas.

(lista.1[[length(lista.1) + 1]] <- rnorm(100))
mapply(`*`, lista.1, lista.2)

Espero que le sirva de algo.

> Muchas gracias,
> 
> Gemma
> 



Más información sobre la lista de distribución R-help-es