De code:
a <- structure(list(`X$Days` = c("10", "38", "66", "101", "129", "185", "283",
"374")), .Names = "X$Days")
Dan is a
als
$`X$Days`
[1] "10" "38" "66" "101" "129" "185" "283" "374"
Ik wil a
dwingen tot een array van numerieke waarden, maar dwingende functies geven me terug
Error: (list) object cannot be coerced to type 'double'
Bedankt,
Antwoord 1, autoriteit 100%
Als u alle elementen van a
wilt converteren naar een enkele numerieke vector en length(a)
groter is dan 1 (OK, zelfs als het lengte 1) heeft, kunt u het object eerst unlist
en vervolgens converteren.
as.numeric(unlist(a))
# [1] 10 38 66 101 129 185 283 374
Houd er rekening mee dat er hier geen kwaliteitscontroles zijn. Ook X$Days
een machtig vreemde naam.
Antwoord 2, autoriteit 27%
Als uw lijst uit meerdere elementen bestaat die naar numeriek moeten worden geconverteerd, kunt u dit bereiken met lapply(a, as.numeric)
.
Antwoord 3, autoriteit 6%
U kunt ook de lijst-subinstelling gebruiken om het element te selecteren dat u wilt converteren. Het zou handig zijn als je lijst meer dan 1 element zou hebben.
as.numeric(a[[1]])
Antwoord 4
In dit geval zal een lus ook het werk doen (en is meestal voldoende snel).
a <- array(0, dim=dim(X))
for (i in 1:ncol(X)) {a[,i] <- X[,i]}
Antwoord 5
Er zijn problemen met sommige gegevens. Overweeg:
as.double(as.character("2.e")) # This results in 2
Een andere oplossing:
get_numbers <- function(X) {
X[toupper(X) != tolower(X)] <- NA
return(as.double(as.character(X)))
}