29

我对粘贴感到困惑,并认为这只是简单的连接。

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

编辑

好的,我看到了

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

会得到我想要的,但是解释为什么以前的代码不起作用?也感谢回答者。

4

2 回答 2

37

对于那些喜欢视觉效果的人,这是我解释其paste工作原理的看法R

在此处输入图像描述

sep创建填充了参数中的值的元素三明治sep

在此处输入图像描述

collapse创建一个大三明治,并在collapse使用参数生成的三明治之间添加参数值sep

在此处输入图像描述

于 2019-07-28T20:31:58.097 回答
29

对于第一个问题,请尝试以下问题(这可能比选择重复 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"

请注意,我们将sepandcollapse参数指定为不同的值,这与您的第二个问题有关。sep允许每个项用字符串分隔,而collapse允许整个结果用字符串分隔。

尝试

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

[1] "CDDDCDDDDD"

或者,使用快捷方式paste0,默认为pastewithsep = ''

paste0(whales, quails, collapse = '')
于 2013-08-27T20:52:52.963 回答