如何获得 R 中一个向量与所有可能的算术函数的所有可能组合?

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

我想用 R 中的所有算术函数对变量进行排列

例子:

testvector <- c("cat", "dog")

# expected outcome

c("cat","dog","cat+dog","cat-dog","dog-cat","cat*dog","cat/dog","dog/cat")

我有大约 10 个变量,所以这很难手工完成。我在 python 中找到了一个响应,也许可以做同样的事情,但我必须在 R 中这样做。

( 如何对 3 个整数执行所有可能的算术运算组合? )

我想用这种手动机器学习方法来找到最佳的变量组合来分离数据集。

如果 ML 包可以为我做到这一点,我也很乐意尝试。

我也想在线性模型中使用这个向量的结果,但也许有更直接的方法。

还有一件事,我还想 - 如果可能的话 - 包括括号以对变量进行分组

# incomplete example

testvector <- c("cat","dog","bird")

# expected outcome looks like

c("(cat-dog)/bird","(bird+cat)/dog","(dog+bird)*cat")

如果这不是用于字符向量,而是用于数字,我会预先用排列预先计算必要的变量,然后使用结果进行建模。

r math permutation
1个回答
0
投票

我们可以使用

expand.grid
获得组合,然后
paste

c(testvector, do.call(paste, c(subset(expand.grid(testvector, 
  c("+", "-", "*", "/"), testvector), Var1 != Var3), sep = "")))

-输出

[1] "cat"     "dog"     "dog+cat" "dog-cat" "dog*cat" "dog/cat" "cat+dog" "cat-dog" "cat*dog" "cat/dog"
© www.soinside.com 2019 - 2024. All rights reserved.