Comment reconnaître et corriger des erreurs dans la liste r

Bien que les listes aident à garder les données ensemble et sont très utiles lorsque vous êtes le traitement de plusieurs jeux de données dans R, ils peuvent causer des ennuis ainsi.

D'abord, vous pouvez facilement oublier que certains fonction retourne une liste au lieu d'un vecteur. Par exemple, de nombreux programmeurs oublient que StrSplit () retourne une liste à la place d'un vecteur. Donc, si vous voulez que le deuxième mot d'une phrase, le code suivant ne retourne pas une erreur, mais il ne vous donne pas la bonne réponse soit:

> StrSplit ('Ceci est une phrase', '') [2] [[1]] NULL

Dans cet exemple, StrSplit () retourne une liste avec un élément, le vecteur avec les mots de la phrase:

> StrSplit ('Ceci est une phrase', '') [[1]] [1] "cette" "est" "une" "phrase"



Pour accéder à ce vecteur, vous devez d'abord sélectionner l'élément voulu dans la liste. Seulement alors vous pouvez regarder pour la deuxième valeur à l'aide des indices de vecteurs, comme ceci:

> StrSplit ('Ceci est une phrase', '') [[1]] [2] [1] "est"

Même le mécanisme d'indexation elle-même peut provoquer des erreurs de ce genre. Par exemple, vous avez des noms de clients et que vous souhaitez ajouter un point entre leurs noms et prénoms. Donc, d'abord, vous les séparer comme ceci:

> Client lt; - c ('Johan Delong »,« Marie Petit')> namesplit lt; - StrSplit (client, '')

Vous souhaitez coller le deuxième nom avec un point entre les deux, de sorte que vous devez sélectionner le deuxième élément de la liste. Si vous utilisez crochets simples, vous obtenez le résultat suivant:

> Coller (namesplit [2], l'effondrement = '.') [1] "c (" Marie ", " Petit ")"

Cela ne veut pas ce que vous voulez du tout. Rappelez-vous que vous pouvez utiliser les deux supports simples et doubles crochets pour sélectionner des éléments dans une liste, mais lorsque vous utilisez crochets simples, vous obtenez toujours une liste retournée. Donc, pour obtenir le résultat correct, vous devez doubles crochets, comme ceci:

> Coller (namesplit [[2]], effondrement = '.') [1] "Marie.Petit"

Notez que R n'a jamais donné un signe - pas même un avertissement - que quelque chose clochait. Donc, si vous remarquez des listes où vous ne voudriez pas les attendre (ou ne les remarque pas où vous faites attendre d'eux), vérifiez vos supports.


» » » » Comment reconnaître et corriger des erreurs dans la liste r