Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何连接向量?_R_Vector_Concatenation - Fatal编程技术网

R 如何连接向量?

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

我试图产生一个单一变量,它是两个字符的串联,例如从“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
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))