bedingt entfernen von Elementen in einem Vektor
Ich habe einen Vektor von Zeichen benannt Vector
, das ist die Ausgabe:
[1] "140222" "140207" "0" "140214" "140228" "140322" "140307" "140419" "140517" "140719" "141018" "150117" "160115"
Ich will um bedingt entfernen Sie das einzige element unterschiedlich zu den anderen, in diesem Fall die 0
.
Ich habe versucht, diesen Ansatz, aber es scheint nicht zu arbeiten:
for (i in 1:length(Vector) {
if (nchar(Vector[i]) <=3)
{remove(Vector[i])}
}
Der Fehler ist:
Fehler entfernen(Vektor[i]) :
... enthalten muss, Namen oder Zeichenfolgen".
Wenn der Vektor heißt
tmp
nur tun tmp[-which(nchar(tmp) < 6)]
InformationsquelleAutor GrilloRob | 2014-02-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zuerst von all, Sie brauchen nicht, um eine Schleife verwenden. Dies zu tun, was Sie wollen:
Vector <- Vector[nchar(Vector) > 3]
Wenn Sie wollten, speziell entfernen Sie die "0", würden Sie dies tun:
Vector <- Vector[Vector != "0"]
Den Fehler verursacht, weil man
remove
auf ein element innerhalbVector
, anstatt auf ein Objekt. In anderen Worten,remove
können entfernen Sie alleVector
aus dem Speicher, aber nicht die Elemente. Dasselbe gilt für andere Objekte.InformationsquelleAutor MDe
Wenn Sie mit R interaktiv (sonst ist es weniger empfehlenswert - siehe hier: Warum ist `[` besser als `Teilmenge`?), kann man auch schreiben:
subset()
sollte nicht verwendet werden, in eine nicht-interaktive Umgebung.Ihre down-Abstimmung ist wirklich nicht konstruktiv. 1/ Die Frage nicht zu erwähnen, es ist eine nicht-interaktive Umgebung. 2/ ich denke, es ist hilfreich zu zeigen, ein Anfänger die verschiedenen Möglichkeiten, die Sprache zu bieten hat.
Gut Bearbeiten, und ich zögerte etwas angesichts des Alters der Frage, aber ich dachte, dass wenn ich stolperte über Sie, während Sie versucht, etwas zu finden, so könnte ein anderer Benutzer.
InformationsquelleAutor nassimhddd