Wie zu erkennen und Liste Fehler in der R Fix

Obwohl Listen mit dem Daten zusammen und kommen in sehr praktisch helfen, wenn Sie mehrere Datensätze in R sind die Verarbeitung, können sie einige Probleme auch verursachen.

Erstens kann man leicht vergessen, dass einige Funktion eine Liste anstelle eines Vektors zurück. Zum Beispiel, vergessen viele Programmierer, dass strsplit () gibt eine Liste anstelle eines Vektors. Also, wenn Sie das zweite Wort aus einem Satz wollen, wird der folgende Code keinen Fehler zurück, aber es nicht geben Sie die richtige Antwort entweder:

> Strsplit ( "dies ist ein Satz ',' ') [2] [[1]] NULL

In diesem Beispiel strsplit () Gibt eine Liste mit einem Element, den Vektor mit den Worten aus dem Satz:

> Strsplit ( "dies ist ein Satz ',' ') [[1]] [1]" this "" ist "" a "" Satz "

Um diesen Vektor zuzugreifen, müssen Sie zunächst das gewünschte Element aus der Liste auswählen. Nur dann können Sie für den zweiten Wert suchen, um die Vektorindizes verwenden, wie folgt aus:

> Strsplit ( "dies ist ein Satz ',' ') [[1]] [2] [1]" ist "

Auch der Indexierungsmechanismus selbst kann solche Fehler verursachen. Zum Beispiel haben Sie einige Namen von Kunden und Sie wollen einen Punkt zwischen ihren Vor- und Nachnamen hinzuzufügen. Also, zuerst, teilen Sie sie wie folgt:

> Kunden lt; - c ( 'Johan Delong', 'Marie Petit')> namesplit lt; - strsplit (Kunde, '')

Sie wollen den zweiten Namen zusammen mit einem Punkt einzufügen dazwischen, so müssen Sie das zweite Element aus der Liste auszuwählen. Wenn Sie einzelne Klammern verwenden, erhalten Sie die folgenden Schritte aus:

> Paste (namesplit [2], Kollaps = '.') [1] "c (" Marie ", " Petit ")"

Das ist nicht das, was Sie überhaupt wollen. Denken Sie daran, dass Sie sowohl einzelne Klammern und doppelte eckige Klammern verwenden können Elemente aus einer Liste auswählen, aber wenn Sie einzelne Klammern verwenden, können Sie immer eine Liste zurückgegeben. Also, das richtige Ergebnis zu erhalten, müssen Sie doppelte eckige Klammern, wie folgt aus:

> Paste (namesplit [[2]], Kollaps = '.') [1] "Marie.Petit"

Beachten Sie, dass R nie ein Zeichen gab - nicht einmal eine Warnung -, dass etwas nicht in Ordnung war. Also, wenn Sie Listen feststellen, wo man sie nicht erwarten würde (oder sie nicht feststellen, wo Sie sie tun erwarten), überprüfen Sie die Klammern.

Menü