gpt4 book ai didi

r - 映射所有参数的组合 [R]

转载 作者:行者123 更新时间:2023-12-04 18:35:02 27 4
gpt4 key购买 nike

考虑这个接收 3 个参数的玩具函数:

toy <- function(x, y, z){
paste(x, y, z)
}

对于每个参数,我有许多值(每个参数不一定是相同的数字),我想应用 toy函数到这些参数的不同组合。

所以我想,好吧,让我们使用多变量版本的应用函数 mapply .
mapply(FUN = toy, x = 1:2, y = c("#", "$"), z = c("a", "b"))

[1] "1 # a" "2 $ b"

但这并不是我想要的。确实,根据帮助 mapply “将 FUN 应用于每个......参数的第一个元素,第二个元素,第三个元素,依此类推。”。我想要的是将 FUN 应用于所有参数的所有不同组合。

所以,而不是
[1] "1 # a" "2 $ b"

我想要的结果是:
[1] "1 # a" "1 # b" "1 $ a" "1 $ b" "2 # a" "2 # b" "2 $ a" "2 $ b"

所以,我的问题是这样做的聪明方法是什么?

当然,我可以事先准备好组合,并为 mapply安排参数。所以它们包括 -rowwise- 所有的组合。但我只是认为这可能是一项相当常见的任务,并且在 apply-family 中可能已经有一个功能可以做到这一点。

最佳答案

你可以结合 do.callexpand.grid以无限量的输入工作,如下所示

toy <- function(...) do.call(paste, expand.grid(...))

那么,你可以做
x = 1:2 ; y = c("#", "$") ; z = c("a", "b")
toy(x, y, z)
# [1] "1 # a" "2 # a" "1 $ a" "2 $ a" "1 # b" "2 # b" "1 $ b" "2 $ b"

这适用于任何输入。你可以试试像 toy(x, y, z, y, y, y, z) 这样的东西,例如为了验证。

关于r - 映射所有参数的组合 [R],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35889954/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com