使用 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
问题::
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