DSG*_*DSG 14 r concatenation paste
我很困惑粘贴,并认为这只是简单的连接.
whales <- c("C","D","C","D","D")
quails <- c("D","D","D","D","D")
results <-paste(whales, quails, collapse = '')
Run Code Online (Sandbox Code Playgroud)
为什么这将返回"C DD DC DD DD D"而不是CD DD CD DD DD?
而且,为什么会这样
results <-paste(whales[1], quails[1], collapse = '')
Run Code Online (Sandbox Code Playgroud)
返回
"C D"?
有空间吗?
感谢:D
编辑
好的,我明白了
results <-paste(whales, quails, collapse = NULL, sep='')
Run Code Online (Sandbox Code Playgroud)
会得到我想要的,但解释为什么以前的代码不起作用?还要感谢回答者.
Ash*_*wad 29
对于那些喜欢视觉效果的人,这里是我解释如何paste工作的看法R:
sep创建填充有sep参数值的逐元素三明治:
collapse创建一个大三明治,并在collapse使用sep参数生成的三明治之间添加参数值:
And*_*eas 23
对于第一个问题,请尝试以下方法(这可能比选择重复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"
Run Code Online (Sandbox Code Playgroud)
您真正想要做的是(获得"期望的"结果)如下:
### "Desired" result:
paste(whales, quails, sep = '', collapse = ' ')
[1] "CD DD CD DD DD"
Run Code Online (Sandbox Code Playgroud)
请注意,我们正在为不同的值指定sep和collapse参数,这与您的第二个问题有关.sep允许每个术语由字符串分隔,而collapse允许整个结果由字符串分隔.
尝试
paste(whales, quails, collapse = '', sep = '')
[1] "CDDDCDDDDD"
Run Code Online (Sandbox Code Playgroud)
可替代地,使用快捷方式paste0,其默认为paste与sep = ''
paste0(whales, quails, collapse = '')
Run Code Online (Sandbox Code Playgroud)