有没有一种方法可以在R中将向量的元素粘合在一起,而不使用循环?

65

假设有一个向量 x:

x <- c("a", " ", "b")

我想要将它快速转换为一个单一的字符串 "a b"。有没有一种不需要循环就可以做到这一点的方式?我知道用循环可以这样做:


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

> y
[1] "a b"

但我需要在许多迭代中执行此操作,每次循环并替换原始内容将变得非常耗时。我希望能够随时执行以下操作:

x <- paste(x)

好像`paste()`函数可以聪明地将向量元素分割开,但我知道它不能。是否有另一个函数或更有创意的使用`paste()`的方法可以有效地完成这个任务?

2个回答

130

你只需要使用collapse参数:

paste(x,collapse="")

谢谢!我一直在想这里应该涉及到一个叫做“折叠”(collapse)的东西,但是我找不到任何相关的文档。 - Max
5
?paste命令里面就有啊! ;) 如果你对某个函数类型感到困惑,可以在控制台中输入?函数名来查看帮助文件。 - joran
1
是的,我猜我没有想到它会成为paste的一个参数。就在你认为你知道一个函数的时候... :P - Max
2
R帮助文件非常有用,即使它不是函数的参数,你也可能会找到你正在寻找的函数:) - Sacha Epskamp
你可以使用paste(str_pad(l,width=7,side="left"), collapse = "") - Saurabh

7

为提供一个替代paste()tidyverse方式,只需添加:

library(glue)
x <- c("a", " ", "b")
glue_collapse(x)
#> a b

本文创建于2020-10-31,使用reprex包(版本为v0.3.0)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接