Wie können 2 Strings verkettet werden?



Answers

help.search() ist eine praktische Funktion, z

> help.search("concatenate")

führt Sie zum paste() .

Question

Wie kann ich zwei Werte in R zusammenführen / kombinieren? Zum Beispiel habe ich:

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

Mein Ziel ist es, tmp als eine Saite zu bekommen

tmp_new = "GAD,AB"

Welche Funktion kann das für mich tun?




Wie andere bereits erwähnt haben, ist paste() der richtige Weg. Aber es kann lästig werden, wenn paste(str1, str2, str3, sep='') wenn Sie das nicht standardmäßige Trennzeichen paste(str1, str2, str3, sep='') eingeben müssen.

Sie können sehr einfach Wrapper-Funktionen erstellen, die vieles einfacher machen. Wenn Sie zum Beispiel feststellen, dass Sie Strings ohne Trennzeichen wirklich häufig verketten, können Sie Folgendes tun:

p <- function(..., sep='') {
    paste(..., sep=sep, collapse=sep)
}

oder wenn Sie oft Strings aus einem Vektor verbinden möchten (wie implode() von PHP):

implode <- function(..., sep='') {
     paste(..., collapse=sep)
}

Ermöglicht dies:

p('a', 'b', 'c')
#[1] "abc"
vec <- c('a', 'b', 'c')
implode(vec)
#[1] "abc"
implode(vec, sep=', ')
#[1] "a, b, c"

Außerdem gibt es das eingebaute paste0 , das dasselbe wie mein paste0 tut, aber keine benutzerdefinierten Trennzeichen paste0 . Es ist etwas effizienter als paste() .







Betrachten Sie den Fall, in dem die Zeichenfolgen Spalten sind und das Ergebnis eine neue Spalte sein sollte:

df <- data.frame(a = letters[1:5], b = LETTERS[1:5], c = 1:5)

df$new_col <- do.call(paste, c(df[c("a", "b")], sep = ", ")) 
df
#  a b c new_col
#1 a A 1    a, A
#2 b B 2    b, B
#3 c C 3    c, C
#4 d D 4    d, D
#5 e E 5    e, E

Überspringen Sie optional die Untermenge [c("a", "b")] wenn alle Spalten eingefügt werden müssen.

# you can also try str_c from stringr package as mentioned by other users too!
do.call(str_c, c(df[c("a", "b")], sep = ", ")) 



Gegeben die Matrix, tmp, die du erstellt hast:

paste(tmp[1,], collapse = ",")

Ich nehme an, es gibt einen Grund, warum Sie eine Matrix mit cbind erstellen, im Gegensatz zu einfach:

tmp <- "GAD,AB"



Links