假设我有向量。
x = c("a","b","c")
我想创建一个函数来返回以下内容。
[1] "a*b" "a*c" "b*c"
我想我们应该使用paste0()函数 或者使用某种for循环来循环向量中的字符 但我不完全确定如何去做。我想澄清一下,我正在寻找一个输出,每次从向量中抽取两个字符,然后使用某种 paste0(...,sep="*")来获得上述所需的输出。我不想一次将所有的字符乘以向量,只想一次乘以两个字符。
我们可以使用 combn
从 base R
combn(x, 2, FUN = paste, collapse="*")
#[1] "a*b" "a*c" "b*c"
你可以使用一个递归函数,这可能会更快。
foo = function(x, sep = "*") {
if (length(x) < 2) {
return(x)
}
ans = paste(x[1], x[-1], sep = sep)
if (length(x) > 2) {
ans = c(ans, Recall(x[-1]))
}
return(ans)
}
foo(c("a", "b", "c"))
#[1] "a*b" "a*c" "b*c"