R 如何连接向量?
我试图产生一个单一变量,它是两个字符的串联,例如从“p30s4”“p28s4”到“p30s4 p28s4”。我已经尝试了猫和粘贴,如下所示。两者都返回空变量。我做错了什么R 如何连接向量?,r,vector,concatenation,R,Vector,Concatenation,我试图产生一个单一变量,它是两个字符的串联,例如从“p30s4”“p28s4”到“p30s4 p28s4”。我已经尝试了猫和粘贴,如下所示。两者都返回空变量。我做错了什么 > blah = c("p30s4","p28s4") > blah [1] "p30s4" "p28s4" > foo = cat(blah) p30s4 p28s4 > foo NULL > foo = paste(cat(blah)) p30s4 p28s4 > foo chara
> blah = c("p30s4","p28s4")
> blah
[1] "p30s4" "p28s4"
> foo = cat(blah)
p30s4 p28s4
> foo
NULL
> foo = paste(cat(blah))
p30s4 p28s4
> foo
character(0)
尝试使用:
> paste(blah, collapse = "")
[1] "p30s4p28s4"
或者,如果您希望在两者之间留出空间:
> paste(blah, collapse = " ")
[1] "p30s4 p28s4"
paste()的“collapse”参数的替代方法是使用do.call()将向量中的每个值作为参数传递
do.call(paste,as.list(blah))
优点是这种方法可以推广到“粘贴”以外的函数。这个问题的答案非常好,而且比我的答案简单得多,因此我采用了“折叠”的用法 然而,为了推广这样一种想法,即当有疑问时,您可以编写自己的函数,我提出了我以前不那么优雅的解决方案:
vecpaste <- function (x) {
y <- x[1]
if (length(x) > 1) {
for (i in 2:length(x)) {
history
y <- paste(y, x[i], sep = "")
}
}
#y <- paste(y, "'", sep = "")
y
}
vecpaste(blah)
vecpaste使用上述cat
的问题在于cat(x)
将x
写入输出,而不是变量。如果要写入字符串,可以执行以下操作:
capture.output(cat(blah))
顾名思义,它捕获字符串中的输出以返回所需的结果。然而,这不是首选的方法,只是一种替代解决方案的解释。你连接了一个向量,可能想改变这个问题,但答案是正确的。as.list(blah)
为我做了这个把戏
capture.output(cat(blah))