有没有办法在不使用循环的情况下将R中矢量的元素粘贴在一起?

Max*_*Max 38 r paste memory-efficient

说有一个向量x:

x <- c("a", " ", "b")
Run Code Online (Sandbox Code Playgroud)

我想快速把它变成单个字符串"a b".有没有办法在没有循环的情况下做到这一点?我知道循环我能做到这一点:

y <- ""
for (i in 1:3){
    paste(y, x[i], sep = "")
}

> y
[1] "a b"
Run Code Online (Sandbox Code Playgroud)

但是我需要在很多次迭代中做到这一点,并且必须循环遍历这个并且每次用新的替换原始将变得非常耗时.我总是希望能够做到这样的事情:

x <- paste(x)
Run Code Online (Sandbox Code Playgroud)

好像paste()可以巧妙地划分向量本身的元素,但我知道它不能.有没有其他功能,或更有创意的方式来使用paste(),这可以有效地实现这一目标?

jor*_*ran 84

你只需要使用collapse参数:

paste(x,collapse="")
Run Code Online (Sandbox Code Playgroud)

  • 它就在`?paste`中!;)如果您对控制台中的函数类型`?function`感到困惑,则需要访问帮助文件. (5认同)
  • R 帮助文件非常有用,即使它不是函数的参数,您也可能会找到您正在寻找的函数:) (2认同)

Ash*_*wad 7

只需添加一种tidyverse方法来提供使用的替代方法paste()

library(glue)
x <- c("a", " ", "b")
glue_collapse(x)
#> a b
Run Code Online (Sandbox Code Playgroud)

由reprex 包于 2020 年 10 月 31 日创建(v0.3.0)