2013-08-27 5 views
8

Ich bin verwirrt von Paste, und dachte, es war nur einfache Verkettung.Paste/Collapse in R

whales <- c("C","D","C","D","D") 

quails <- c("D","D","D","D","D") 

results <-paste(whales, quails, collapse = '') 

Warum würde "C DD DC DD DD" anstelle von CD DD CD DD DD zurückgeben?

Außerdem warum sollte

results <-paste(whales[1], quails[1], collapse = '') 

Rückkehr

"C D"?

mit einem Leerzeichen?

Danke, D

EDIT

OK, ich sehe, dass

results <-paste(whales, quails, collapse = NULL, sep='') 

mir bekommen, was ich will, aber eine Erklärung, warum der vorherige Code nicht funktioniert? Und auch danke an die Beantworter.

+5

Warum nach unten Stimmen? Es ist eine legitime Frage und auch gut gerahmt. –

Antwort

20

Für die erste Frage, versuchen Sie Folgendes (das ist vielleicht illustrativer als die Wahl, 2 Zeichen zu wiederholen).

### Note that R paste's together corresponding elements together... 
paste(c("A", "S", "D", "F"), 
     c("W", "X", "Y", "Z")) 

[1] "A W" "S X" "D Y" "F Z" 

### Note that with collapse, R converts the above 
    # result into a length 1 character vector. 
paste(c("A", "S", "D", "F"), 
     c("W", "X", "Y", "Z"), collapse = '') 

[1] "A WS XD YF Z" 

Was Sie wirklich tun möchte, ist die folgende (das „gewünschte“ Ergebnis zu erhalten):

### "Desired" result: 
paste(whales, quails, sep = '', collapse = ' ') 

[1] "CD DD CD DD DD" 

Beachten Sie, dass wir die sep und collapse Argumente auf verschiedene Werte angeben, die bezieht sich deine zweite Frage. ermöglicht, dass jeder Ausdruck durch eine Zeichenkette getrennt wird, während collapse es erlaubt, das gesamte Ergebnis durch eine Zeichenkette zu trennen.

Versuchen

paste(whales, quails, collapse = '', sep = '') 

[1] "CDDDCDDDDD" 

Alternativ verwenden Sie eine Verknüpfung paste0, die standardmäßig auf paste mit sep = ''

paste0(whales, quails, collapse = '')