我有一个向量vars
,它有六个元素:
vars <- c("ac", "fv", "vs", "v2", "ms", "yv")
要随机组合元素,请使用combn
a <- do.call(paste, c(data.frame(t(combn(vars, 5)))))
输出看起来像这样
a
[1] "ac fv vs v2 ms"
[2] "ac fv vs v2 yv"
[3] "ac fv vs ms yv"
[4] "ac vs v2 ms yv"
[5] "fv vs v2 ms yv"
现在我想放一个&#34; +&#34;在输出看起来像这样的元素之间:
a
[1] "ac+fv+vs+v2+ms"
[2] "ac+fv+vs+v2+yv"
[3] "ac+fv+vs+ms+yv"
[4] "ac+vs+v2+ms+yv"
[5] "fv+vs+v2+ms+yv"
我尝试用gsub
替换元素之间的空格,但这不起作用,因为没有空格。任何评论都表示赞赏,谢谢。
答案 0 :(得分:4)
如果您在FUN
中使用combn
参数,这会更容易。 collapse
中的paste
参数非常适合插入+
符号。
对于数据框结果,您可以执行
data.frame(a = combn(vars, 5, FUN = paste, collapse = "+"))
# a
# 1 ac+fv+vs+v2+ms
# 2 ac+fv+vs+v2+yv
# 3 ac+fv+vs+ms+yv
# 4 ac+fv+v2+ms+yv
# 5 ac+vs+v2+ms+yv
# 6 fv+vs+v2+ms+yv
答案 1 :(得分:2)
而不是do.call
做:
apply(data.frame(t(combn(vars, 5))), 1, paste, collapse="+")
答案 2 :(得分:1)
目前尚不清楚为何无法使用gsub
gsub(" ", "+", a)
#[1] "ac+fv+vs+v2+ms" "ac+fv+vs+v2+yv" "ac+fv+vs+ms+yv" "ac+fv+v2+ms+yv"
#[5] "ac+vs+v2+ms+yv" "fv+vs+v2+ms+yv"