Умножение символов в векторе в R - PullRequest
2 голосов
/ 29 мая 2020

Предположим, у меня есть вектор:

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

Я хотел бы создать функцию, которая возвращает следующее:

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

Я предполагаю, что мы использовали бы функцию paste0 () или используйте что-то вроде от l oop до l oop через символы в векторе, но я не совсем уверен, как go об этом. Чтобы уточнить, я ищу вывод, который принимает два символа из вектора за раз и использует своего рода paste0 (..., sep = "*"), чтобы получить желаемый результат выше. Я не хочу умножать сразу все символы в векторе, только два символа за раз.

Ответы [ 2 ]

4 голосов
/ 29 мая 2020

Мы можем использовать combn из base R

combn(x, 2, FUN = paste, collapse="*")
#[1] "a*b" "a*c" "b*c"
1 голос
/ 29 мая 2020

Вы можете использовать функцию рекурсии, которая может быть быстрее.

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"
...