Cómo forzar a un objeto de lista a escribir ''doble''
(4)
Hay problemas con algunos datos. Considerar:
as.double(as.character("2.e")) # This results in 2
Otra solución:
get_numbers <- function(X) {
X[toupper(X) != tolower(X)] <- NA
return(as.double(as.character(X)))
}
El código:
a <- structure(list(`X$Days` = c("10", "38", "66", "101", "129", "185", "283",
"374")), .Names = "X$Days")
Entonces a
es como
$`X$Days`
[1] "10" "38" "66" "101" "129" "185" "283" "374"
Me gustaría forzar a un conjunto de valores numéricos, pero las funciones de coerción me devuelven
Error: (list) object cannot be coerced to type ''double''
Gracias,
Si desea convertir todos los elementos de a
vector numérico único y la length(a)
es mayor que 1 (OK, incluso si es de longitud 1), puede unlist
el objeto primero y luego convertir.
as.numeric(unlist(a))
# [1] 10 38 66 101 129 185 283 374
Tenga en cuenta que no hay controles de calidad aquí. Además, X$Days
un nombre extraño.
Si su lista es como elementos múltiples que deben convertirse a numéricos, puede lograr esto con lapply(a, as.numeric)
.
También puede usar el subconjunto de listas para seleccionar el elemento que desea convertir. Sería útil si su lista tuviera más de 1 elemento.
as.numeric(a[[1]])