2013-08-27 131 views
8

我很糊塗,認爲它只是簡單的連接。Paste/Collapse in R

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

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

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

爲什麼會返回「C DD DC DD DD D」而不是CD DD CD DD DD?

而且,爲什麼會

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

回報

「C d」?

與空間?

感謝, d

編輯

OK,我看到

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

會得到我我想要的,但是爲什麼以前的代碼沒有工作的解釋?並感謝答覆者。

+5

爲什麼下跌票?這是一個合法的問題,也是精心設計的。 –

回答

20

對於第一個問題,請嘗試以下(這可能比選擇重複2個字符更具說明性)。

### 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" 

你真的想這樣做(獲得「期望」的結果)什麼是以下幾點:

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

[1] "CD DD CD DD DD" 

注意,我們指定的sepcollapse參數不同的值,它涉及到你的第二個問題。 sep允許每個術語由一個字符串分隔,而collapse允許整個結果由一個字符串分隔。

嘗試

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

[1] "CDDDCDDDDD" 

或者使用快捷鍵paste0,默認爲pastesep = ''

paste0(whales, quails, collapse = '')