Dada una variedad de enteros, ¿puedo encontrar el par de elementos adyacentes que tiene el producto más grande y devolver ese producto usando apply?

¿Se puede hacer usando la función aplicar?

Entrada esperada:

x <- c(3, 6, -2, -5, 7, 3)

Salida esperada:

adjacent_elements_product(x) = 21

Publicaciones similares que pueden ser relevantes: Dada una variedad de enteros, encuentre el par de elementos adyacentes que tiene el producto más grande y devuelva ese producto

-1
icedcoffee 6 feb. 2020 a las 13:19

2 respuestas

La mejor respuesta

Podrías usar rodar apply

max(zoo::rollapply(x, 2, prod))
#[1] 21

Una opción base R sería:

max(head(x, -1) * tail(x, -1))
5
Ronak Shah 6 feb. 2020 a las 10:32

Usando la base R y una función como en su ejemplo:

x <- c(3, 6, -2, -5, 7, 3)

adjacent_elements_product <- function(x) {
  return(max(x[-1] * x[-length(x)]))
}

adjacent_elements_product(x)
2
dario 6 feb. 2020 a las 10:46