我有一个 tibble df,其中每一行都包含一个后验分布列表(beta)(4000 个样本)。我想使用 bayestestR::bayesfactor_parameters 计算贝叶斯因子,但我使用 rowwise() 的方法非常慢(大约 3000 行需要 20 分钟)。您知道将此函数应用于小标题的每一行的更快方法吗?非常感谢。
df <- tibble(idx = seq(1, 3000), beta = list(rnorm(4000, 0.5, 3)))
df <- df %>%
slice(1:10) %>%
rowwise() %>%
mutate(ioi = bayestestR::
bayesfactor_parameters(posterior = unlist(beta), prior = rnorm(1e4, 0, 10),
direction = "two-sided",
null = c(-1, 1))$log_BF) %>%
ungroup()
最佳答案
是的!使用 multidplyr 并行申请
cluster <- new_cluster(parallel::detectCores() - 2)
cluster_library(cluster, c('tidyverse', 'furrr'))
cluster_copy([...])
df %>%
rowwise() %>%
partition(cluster) %>%
mutate([...]) %>%
collect()
关于r - 有没有比 rowwise() 更快的方法将函数按行应用于 tibble 的一列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72466871/