使用 purrr/furrr 而不是应用将 data.frame 按行传递给函数

Pass data.frame row-wise to function using purrr/furrr instead of apply

问题::

apply 的等效 purrr/furrr 函数是什么,它采用数据框并将其按行馈送到函数?

上下文::

我有 data.frame 个参数组合:

n=10

parameters <- data.frame(
lam = runif(n = n, min = .35, max = .5),
# cs = runif(n = n, min = 1.3, max = 2.5),
cs = rnorm(n = n, mean = 1.18, sd = 0.15),
af = runif(n = n, min = 1.5, max = 2.2)
)

我有一个函数,它从参数 data.frame 中获取值并生成一个向量。

gradient_model <- function(parameters) {
lam <- parameters[1]
cs <- parameters[2]
af <- parameters[3]
x <- rep(0, 5)

    for (i in seq(1, 5)) {
        x[i + 1] <- x[i] + lam * (cs * af - x[i])
    }
  return(x %>% unlist())
}

目前我正在使用 apply 但找不到等效的 purrr(因此 furrr 用于并行)命令

对于每一行参数运行循环函数gradientModel并将结果存储在data.frame

predictions <- apply(parameters, 1, gradient_model)

什么是等效的 purrr/furrr 函数?

pmap*()(因此 future_pmap*())按名称匹配参数,因此您可以这样做:

pmap_dfc(parameters, 
         function(lam, cs, af) {
             x <- rep(0, 5)
             
             for (i in seq(1, 5)) {
                 x[i + 1] <- x[i] + lam * (cs * af - x[i])
             }
             return(x)
         }) 

   ...1  ...2  ...3  ...4  ...5  ...6  ...7  ...8  ...9 ...10
  <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 0     0      0    0     0     0     0      0    0     0    
2 0.866 0.701  1.04 0.809 0.845 0.885 0.988  1.00 0.760 0.995
3 1.33  1.12   1.57 1.29  1.37  1.34  1.56   1.53 1.16  1.56 
4 1.57  1.37   1.84 1.59  1.70  1.57  1.89   1.81 1.36  1.88 
5 1.71  1.52   1.98 1.76  1.91  1.69  2.08   1.95 1.47  2.06 
6 1.78  1.61   2.05 1.86  2.03  1.76  2.19   2.03 1.53  2.16