plots - text in r
¿Por qué 365 días son iguales a 80000 años? (2)
Usted malinterpreta el significado del argumento de las units
. De la documentación,
unidades una cadena de caracteres que especifica el tipo de unidades a las que se refiere
num
.
donde num
es el primer argumento. Asi que
duration(i1)
es equivalente a
duration(i1, units = "seconds")
Sin embargo,
duration(i1, units = "days")
significa que i1
se mide en days
; De ahí el número muy grande.
Tengo un interval
lubridate y quería obtener el número de días como entero. Sin embargo obtengo los siguientes resultados intermedios extraños:
library("lubridate")
i1 <- interval("2015-01-01 00:00:00", "2016-01-01 00:00:00")
i1 <- interval(ymd_hms("2015-01-01 00:00:00"), ymd_hms("2016-01-01 00:00:00")) # Gives the same result
duration(i1)
# [1] "31536000s (~365 days)"
duration(i1, units = "days")
# [1] "2724710400000s (~86340.86 years)"
Aquí hay dos atajos de trabajo. Este último lanza un mensaje "intervalo de coacción a la duración" (Y no sé la razón de eso ...)
> as.numeric(as.duration(i1), units = "days")
[1] 365
> as.numeric(i1, units = ''days'')
(R versión 3.3.0 con fecha 2016-05-03, lubridate versión 1.5.6.)
[el uso de la
duration
en un objeto deinterval
] debe ser deshabilitado. Para el uso de conversiónas.duration
.
Además, el error en el código anterior ahora se corrige al deshabilitar la llamada a la función:
> duration(i1)
Error in .duration_from_num(num, units) :
First argument to `duration` constructor must be character or numeric. Supplied object of class ''Interval''
> as.duration(i1)
[1] "31536000s (~52.14 weeks)"