Suma que implica valores numéricos (0)
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
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
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