r

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]])