Hur man hanterar och Fix Lista Fel i R

June 12

Även listor hjälpa till med att hålla uppgifter tillsammans och komma väl till pass när du bearbetar flera dataset i R, kan de orsaka en del problem också.

Först kan man lätt glömma att vissa returnerar en lista istället för en vektor. Till exempel, många programmerare glömma att strsplit () returnerar en lista istället för en vektor. Så, om du vill att andra ordet ur en mening, följande kod inte returnera ett fel, men det ger dig inte rätt svar antingen:

> Strsplit ("detta är en mening", "') [2]
[[1]]
NULL

I detta exempel strsplit () returnerar en lista med ett element, vektorn med orden från meningen:

> Strsplit ("detta är en mening", '')
[[1]]
[1] "detta" "är" "en" "mening"

För att komma åt denna vektor, först måste du välja önskad elementet i listan. Först då kan du leta efter det andra värdet med vektorindex, som den här:

> Strsplit ("detta är en mening", '') [[1]] [2]
[1] "är"

Även indexeringsmekanismen i sig kan orsaka fel av detta slag. Till exempel, har du några namn på kunder och du vill lägga till en punkt mellan sina för- och efternamn. Så, först, dela du dem så här:

> Kund <- c ('Johan Delong', 'Marie Petit')
> Namesplit <- strsplit (kund, '')

Du vill klistra det andra namnet tillsammans med en prick i mellan, så du måste välja det andra elementet i listan. Om du använder enstaka fästen, får du följande:

> Pasta (namesplit [2], kollaps = '.')
[1] "c (\" Marie \ ", \" Petit \ ")"

Det är inte vad du vill på alla. Kom ihåg att du kan använda både enkla fästen och dubbla fästen att välja element från en lista, men när du använder enkla fästen, får du alltid en lista returneras. Så, för att få rätt resultat, behöver du dubbla fästen, så här:

> Pasta (namesplit [[2]], kollaps = '.')
[1] "Marie.Petit"

Lägg märke till att R aldrig gav ett tecken - inte ens en varning - att något var fel. Så, om du märker listor där du inte förväntar dig dem (eller inte märker dem där du förväntar dem), kontrollera dina fästen.