如何在不使用公式表示法的情况下将参数传递给purrr的map函数?

时间:2019-06-02 20:01:08

标签: r function dictionary formula purrr

我一直遵循Hadley Wickham的在线书籍“ R for Data Science”,并且一旦引入purrr:map函数,就会感到有些困惑。特别是,question 21.5.3 (4)要求为每种均值(-10、0、10、100)创建10个随机法线,但是我尝试使用map来应用函数失败。

我确实注意到(与前面的示例不同),均值在这里用作参数,而不是该函数所应用的对象。 solution使用(缩写)公式符号。哪怕explanation暗示map()内的代码都是等效的,究竟是什么让代码使用公式而不是函数呢?

给定的解决方案是:

    tree = ET.parse(xmlfi)
    root = tree.getroot()
    for item in root.findall('book'):
        print(item)

对我来说,等效功能如下所示:

library("tidyverse")

mu <- c(-10, 0, 10, 100)
map(mu, ~ rnorm(n = 10, mean = .))

还请注意,确实可以使用传递的向量作为函数的参数映射,例如:

library("tidyverse")

mu <- c(-10, 0, 10, 100)
map(mu, rnorm(n = 10, mean = mu)) 

1 个答案:

答案 0 :(得分:0)

mu <- c(-10, 0, 10, 100)
#map(mu, rnorm(n = 10, mean = mu)) 
map(mu, partial(rnorm, n = 10)) 
map(mu, rnorm, n = 10) 
map(mu, function(x, n = 10) rnorm(n = n, mean = x)) 

三种不同的方法。我个人比较喜欢2号。