在R中乘以向量中的字符

问题描述 投票:0回答:1

假设我有向量。

x = c("a","b","c")

我想创建一个函数来返回以下内容。

[1] "a*b" "a*c" "b*c"

我想我们应该使用paste0()函数 或者使用某种for循环来循环向量中的字符 但我不完全确定如何去做。我想澄清一下,我正在寻找一个输出,每次从向量中抽取两个字符,然后使用某种 paste0(...,sep="*")来获得上述所需的输出。我不想一次将所有的字符乘以向量,只想一次乘以两个字符。

r function loops character combinations
1个回答
4
投票

我们可以使用 combnbase R

combn(x, 2, FUN = paste, collapse="*")
#[1] "a*b" "a*c" "b*c"

1
投票

你可以使用一个递归函数,这可能会更快。

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"
© www.soinside.com 2019 - 2024. All rights reserved.