小编Rob*_*sen的帖子

R:c_across() 非常慢 - 有没有更快但优雅的方法?

这个问题的根本主题实际上是关于《D&D 5E》中的积分购买系统,但在研究它时,我注意到这c_across()大大减慢了速度。

该方法

die_value <- 8L:15L
point_value <- c(0L, 1L, 2L, 3L, 4L, 5L, 7L, 9L)

determine_points <- function(n) {
    sapply(n, function(x) point_value[which(die_value == x)])
}

sum27 <- crossing(
    d1 = die_value,
    d2 = die_value,
    d3 = die_value,
    d4 = die_value,
    d5 = die_value,
    d6 = die_value
) %>%
    mutate(across(d1:d6, ~determine_points(.x), .names = "{col}_points")) %>% # see next blocks for options
Run Code Online (Sandbox Code Playgroud)

作为第一次尝试按行对d[n]_points列进行求和total_points,我尝试采用明显的rowwise %>% sum(c_across)路线

rowwise %>% mutate(total_points = sum(c_across(d1_points:d6_points)))
Run Code Online (Sandbox Code Playgroud)

然而,运行这个过程花了很长时间。相比之下,更明确的版本确实很快。 …

r dplyr

2
推荐指数
1
解决办法
375
查看次数

标签 统计

dplyr ×1

r ×1