470 Stimmen

Wie können zwei Zeichenketten miteinander verknüpft werden?

Wie kann ich zwei Werte verketten (zusammenführen, kombinieren)? Ich habe zum Beispiel:

tmp = cbind("GAD", "AB")
tmp
#      [,1]  [,2]
# [1,] "GAD" "AB"

Mein Ziel ist es, die beiden Werte in "tmp" zu einer Zeichenkette zu verketten:

tmp_new = "GAD,AB"

Welche Funktion kann dies für mich tun?

0 Stimmen

Die meisten Antworten hier versagen, wenn die Zeichenketten Vektoren sind, wie die Antwort von @RichardScriven zeigt.

0 Stimmen

@smci was ist mit der kleinen Antwort, die ich gepostet habe? irgendwelche Vorschläge, um sie zu verbessern?

600voto

Rainer Punkte 7983
paste()

ist der richtige Weg. Wie die Vorposter schon sagten, kann Paste zwei Dinge tun:

Werte zu einer "Zeichenkette" zusammenfügen, z. B.

> paste("Hello", "world", sep=" ")
[1] "Hello world"

wobei das Argument sep gibt das/die Zeichen an, die zwischen den zu verkettenden Argumenten verwendet werden sollen, oder kollabierte Zeichenvektoren

> x <- c("Hello", "World")
> x
[1] "Hello" "World"
> paste(x, collapse="--")
[1] "Hello--World"

wobei das Argument collapse gibt das/die Zeichen an, die zwischen den Elementen des zu kollabierenden Vektors verwendet werden sollen.

Sie können sogar beides kombinieren:

> paste(x, "and some more", sep="|-|", collapse="--")
[1] "Hello|-|and some more--World|-|and some more"

96voto

rtelmore Punkte 1325

help.search() ist eine praktische Funktion, z. B.

> help.search("concatenate")

führt Sie zu paste() .

53voto

Rich Scriven Punkte 93409

Für die ersten Nicht paste() Antwort, können wir uns ansehen stringr::str_c() (und dann toString() unten). Es gibt sie noch nicht so lange wie diese Frage, daher halte ich es für sinnvoll zu erwähnen, dass es sie auch gibt.

Wie Sie sehen können, ist die Anwendung sehr einfach.

tmp <- cbind("GAD", "AB")
library(stringr)
str_c(tmp, collapse = ",")
# [1] "GAD,AB"

Nach der Beschreibung in der Dokumentationsdatei passt es gut zu diesem Problem.

Um zu verstehen, wie str_c funktioniert, müssen Sie sich vorstellen, dass Sie eine Matrix von Zeichenketten aufbauen. Jedes Eingabeargument bildet eine Spalte und wird unter Anwendung der üblichen Umformungsregeln auf die Länge des längsten Arguments erweitert. Die Zeichenfolge sep wird zwischen jeder Spalte eingefügt. Wenn collapse NULL ist, wird jede Zeile zu einer einzigen Zeichenkette zusammengefaßt. Ist der Wert nicht NULL, wird diese Zeichenkette am Ende jeder Zeile eingefügt, und die gesamte Matrix wird zu einer einzigen Zeichenkette kollabiert.

Addierte 4/13/2016 : Es ist nicht genau dasselbe wie die von Ihnen gewünschte Ausgabe (zusätzliches Leerzeichen), aber das hat auch noch niemand erwähnt. toString() ist im Grunde eine Version von paste() con collapse = ", " fest kodiert, so dass Sie Folgendes tun können

toString(tmp)
# [1] "GAD, AB"

38voto

Ville Salonen Punkte 2586
> tmp = paste("GAD", "AB", sep = ",")
> tmp
[1] "GAD,AB"

Ich fand dies bei Google durch die Suche nach R Zeichenketten verketten : http://stat.ethz.ch/R-manual/R-patched/library/base/html/paste.html

34voto

Megatron Punkte 14031

Wenn Ihr Ziel die direkte Ausgabe in eine Datei oder stdout ist, können Sie alternativ cat :

cat(s1, s2, sep=", ")

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X