Oplossing: object (lijst) kan niet worden geforceerd om "dubbel" te typen;
Een veel voorkomende fout die u in R kunt tegenkomen is:
Error: (list) object cannot be coerced to type 'double'
Deze fout treedt op wanneer u probeert een lijst met meerdere elementen naar numerieke elementen te converteren zonder eerst de functie unlist() te gebruiken.
In deze zelfstudie worden de exacte stappen beschreven die u kunt gebruiken om deze fout op te lossen.
Hoe de fout te reproduceren
De volgende code probeert een lijst met meerdere items naar numerieke waarden te converteren:
#create list x <- list(1:5, 6:9, 7) #display list x [[1]] [1] 1 2 3 4 5 [[2]] [1] 6 7 8 9 [[3]] [1] 7 #attempt to convert list to numeric x_num <- as. numeric (x) Error: (list) object cannot be coerced to type 'double'
Omdat we de functie unlist() niet hebben gebruikt, hebben we de foutmelding gekregen (list) kan niet worden geforceerd om „double“ te typen .
Hoe u de fout kunt oplossen
Om de lijst naar numeriek te converteren, moeten we ervoor zorgen dat we de functie unlist() gebruiken:
#create list x <- list(1:5, 6:9, 7) #convert list to numeric x_num <- as. numeric (unlist(x)) #display numeric values x_num [1] 1 2 3 4 5 6 7 8 9 7
We kunnen de functie class() gebruiken om te verifiëren dat x_num inderdaad een vector van numerieke waarden is:
#verify that x_num is numeric
class(x_num)
[1] "digital"
We kunnen ook controleren of de originele lijst en de numerieke lijst hetzelfde aantal elementen bevatten:
#display total number of elements in original list sum(lengths(x)) [1] 10 #display total number of elements in numeric list length(x_num) [1] 10
We zien dat de twee lengtes overeenkomen.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende fouten in R kunt oplossen:
Oplossing in R: namen komen niet overeen met eerdere namen
Hoe op te lossen in R: contrasten kunnen alleen worden toegepast op factoren met 2 of meer niveaus
Hoe op te lossen in R: de lengte van een langer object is geen veelvoud van de lengte van een korter object