gpt4 book ai didi

r - purrr::pmap 与其他默认输入

转载 作者:行者123 更新时间:2023-12-04 01:21:30 24 4
gpt4 key购买 nike

我想知道如何使用 pmap()函数,如果我有超过 3 个输入作为参数映射到具有其他默认输入的函数。

这是一个可重现的示例:

a=c(5, 100, 900)
b=c(1, 2, 3)
ablist=list(mean=a,sd=b)
pmap(ablist, ~rnorm( mean=a , sd=b , n = 9))

输出:
 [[1]]
[1] 5.734723 99.883171 895.962561 5.346905 98.723191 903.373177 4.172267 96.424440 897.437970

[[2]]
[1] 4.427977 98.348139 899.287248 4.404674 99.178516 900.983974 3.836353 101.520355 899.992332

[[3]]
[1] 4.961772 95.927525 899.096313 4.444354 101.694591 904.172462 6.231246 97.773325 897.611838

但正如你所看到的,输出没有映射 meansd按照向量的顺序。

我要 [[1]]rnorm(mean=5,sd=1,n=9)等等。出于好奇,我想知道什么 pmap()正在为这个演示做。

顺便说一句,我知道在这个例子中,我可以很容易地使用 map2()没有任何麻烦,但在我的真实代码中,我有 10 个输入,所以我需要使用 pmap() .

提前感谢您的任何答复!

最佳答案

当您使用时 pmap , 你可以用 ..1 引用你的论点, ..2等。这应该给你你想要的:

pmap(ablist, ~rnorm(mean = ..1, sd = ..2, n = 9))

或者,您可以提供包含所有参数的命名列表。这也有效:
abclist = list(
mean = c(5, 100, 900),
sd = c(1, 2, 3),
n = rep(9, 3)
)

pmap(abclist, rnorm)

您的代码正在运行 rnorm(mean = c(5, 100, 900), sd = c(1, 2, 3), n = 9) 3 次并将其存储在列表中。

关于r - purrr::pmap 与其他默认输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53874291/

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