首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将data.frame行按行传递给函数,使用purrr/furrr而不是apply

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

Stack Overflow用户
提问于 2022-04-20 12:37:13
回答 1查看 93关注 0票数 2

问题::

什么是与purrr/furrr等价的apply函数,它接受数据帧和行向函数的输入?

上下文::

我有一个参数组合的data.frame:

代码语言:javascript
复制
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中获取值并生成一个向量。

代码语言:javascript
复制
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中

代码语言:javascript
复制
predictions <- apply(parameters, 1, gradient_model)

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-20 13:41:56

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

代码语言:javascript
复制
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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71939770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档