Le code:
a <- structure(list(`X$Days` = c("10", "38", "66", "101", "129", "185", "283",
"374")), .Names = "X$Days")
Alors a
est comme
$`X$Days`
[1] "10" "38" "66" "101" "129" "185" "283" "374"
J'aimerais forcer a
à un tableau de valeurs numériques, mais les fonctions de contrainte me renvoient
Error: (list) object cannot be coerced to type 'double'
Merci,
Si vous souhaitez convertir tous les éléments de a
en un seul vecteur numérique et que length(a)
est supérieur à 1 (OK, même s'il est de longueur 1), vous pouvez tout d'abord unlist
puis convertir.
as.numeric(unlist(a))
# [1] 10 38 66 101 129 185 283 374
Gardez à l'esprit qu'il n'y a pas de contrôle de qualité ici. En outre, X$Days
un nom étrange et puissant.
Si votre liste contient plusieurs éléments à convertir en éléments numériques, vous pouvez y parvenir avec lapply(a, as.numeric)
.
Il y a des problèmes avec certaines données. Considérer:
as.double(as.character("2.e")) # This results in 2
Une autre solution:
get_numbers <- function(X) {
X[toupper(X) != tolower(X)] <- NA
return(as.double(as.character(X)))
}
Dans ce cas, une boucle fera également l'affaire (et est généralement suffisamment rapide) .
a <- array(0, dim=dim(X))
for (i in 1:ncol(X)) {a[,i] <- X[,i]}