2014-09-23 10 views
7

Ich habe eine Funktion aus, die im Grunde mehrere Zeichenfolgen ausgibt, das heißt beispielsweisealle Maximallängenwerte in einem Zeichenvektor in R

"110110" "110" "101" "011" 

Nun I zugewiesen, um die Ausgabe der Funktion in einem Variable a,

a<- c("110110", "110", "101", "011") 

Die Klasse von a kommt heraus, um Charakter zu sein. Jetzt möchte ich nur die Saiten, die die maximale Länge haben. Zum Beispiel ist in diesem Beispiel die maximale Länge "110110". Also, ich will das. Ich habe versucht, mit dem Befehl max, aber es gibt nur eine maximale Länge Zeichenfolge, wenn es mehrere sind. Zum Beispiel in Strings wie diesen

a <- c("110", "101", "abc", "cab") 

Verwendung von max Befehl gibt nur "cab" zurück. Ich möchte jedoch alle Strings mit der maximalen Länge. Wie kann ich es tun?

+0

Lassen Sie mich nur bemerken, dass ein <- c ("110", "101", "abc", "Taxi") ist ein schlechtes Beispiel wie alle Saiten die gleiche Länge haben. –

Antwort

10

Um die "Länge" der Zeichenfolge zu messen, müssen Sie etwas wie nchar verwenden. Wenn Sie alle Elemente mit der maximalen Anzahl von Zeichen möchten, können Sie mit nchar(a)==max(nchar(a)) filtern. Der folgende Code sollte tun, was Sie versuchen zu tun:

a <- c("110", "101", "abc", "cab") 

a[nchar(a)==max(nchar(a))] 
[1] "110" "101" "abc" "cab" 
+0

Hallo. Tut mir leid, aber da es die Ausgabe einer Funktion ist, werde ich das ausführen. An einigen Stellen gibt die Funktion also '' '' d. H. NULL zurück. An diesen Stellen zeigt dieser Code eine Warnmeldung 'In max (nchar (a)): keine nicht fehlenden Argumente zu max; Rückgabe-Eingabe. Wie man diese anpackt? – Qirohchan

+0

@Qin dies wird passieren, wenn alle Elemente NULL sind und es ist nur eine Warnung, Sie können es in diesen Fällen ignorieren und das Ergebnis wird korrekt, auch ein NULL-Vektor. –

+0

@Qin Sie können die Null-Längen-Einträge auch mit 'nzchar' entfernen. Oder in der Funktion könnten Sie die Zeile 'if (any (nzchar (x))) x <- x [nzchar (x)]' oder etwas in diesen Zeilen einfügen. Dies würde diese Warnungen los, wenn Sie 'max' aufrufen –

Verwandte Themen