Я хочу передать точки ...
моему map()
, используя задание, чтобы я мог оценить предоставленный аргумент.
Передача ...
напрямую работает, но цитирование ...
и соединение с использованием !!!
вызывает ошибку.
Я пробовал использовать различные функции rlang, например syms
, quos
, enquos
и т. Д. Я приложил все усилия, чтобы прочитать главы 17-20 Advanced-R.
Я создал функцию f
, которая рисует случайное нормальное распределение для каждого числадо n
.Я могу передать другие параметры rnorm()
, используя точки.Это отлично работает.
library(magrittr)
library(purrr)
f <- function(n, ...) {
1:n %>%
map(rnorm, ...)
}
f(2, mean = 10)
#>
#> [[1]]
#> [1] 10.90561
#>
#> [[2]]
#> [1] 11.19031 12.16856
f(2)
#> [[1]]
#> [1] -1.197873
#>
#> [[2]]
#> [1] 1.023398 -2.023645
Я создал вторую функцию g()
, которая предназначена для того же действия, но с использованием tidy eval.
g <- function(n, ...) {
1:n %>%
map(rnorm, !!!enquos(...))
}
g(3)
#>
#> [[1]]
#> [1] NA
#>
#> [[2]]
#> [1] NA NA
#>
#> Warning messages:
#> 1: In .f(.x[[i]], ...) : NAs produced
#> 2: In .f(.x[[i]], ...) : NAs produced
Эта реализация выдает NA
.
Я пытался использовать list2()
для этого, но все еще не могу его оценить.Есть ли способ оценить точки, используя tidyeval в вызове карты?