Suma que implica valores numéricos (0)

Oct 06 2020

Suponga que x es un número real o un vector. i se valora-Falso. Entonces x [i] devolverá numérico (0). Me gustaría tratar esto como un número real 0, o un entero 0, que son aptos para la suma.

numérico (0) agregado a cualquier número real devolverá numérico (0), mientras que deseo obtener el número real que se agrega como resultado. ¿Qué puedo hacer para convertir el valor numérico (0)? ¡Gracias por adelantado!

Respuestas

2 akrun Oct 07 2020 at 01:58

Es solo cuando lo hacemos +, es un problema. Esto se puede evitar si usamossum

sum(numeric(0), 5)
#[1] 5
sum(numeric(0), 5, 10)
#[1] 15

O si necesitamos utilizar +, una opción fácil es concatenar con 0, seleccionar el primer elemento. Si el elemento es numeric(0), se reemplaza por 0, para otros casos, el primer elemento permanece intacto

c(numeric(0), 0)[1]
#[1] 0

Usando un pequeño ejemplo

lst1 <- list(1, 3, numeric(0),  4, numeric(0))
out <- 0
for(i in seq_along(lst1)) {
       out <- out + c(lst1[[i]], 0)[1]
  }

out
#[1] 8
RonakShah Oct 07 2020 at 07:54

Puede usar max/ mincon 0 para obtener 0 como salida cuando la entrada es numeric(0).

x <- 1:10
max(x[FALSE], 0)
#[1] 0

min(x[FALSE], 0)
#[1] 0