微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否有比for循环更快的方法在R中使用facet_wrap_paginate?

如何解决是否有比for循环更快的方法在R中使用facet_wrap_paginate?

我正在尝试使用facet_wrap_paginate()包中的ggforcefacet_wrap()应用于大量面,如果它们在单个页面上则无法读取。但是,使用for()循环(如插图中所述)来创建每个页面对于我的数据集来说非常慢,所以我想知道如何对这个过程进行矢量化处理?我怀疑的部分问题是我将for()循环嵌套到一个函数中,以便可以将其应用于多种情况,并且我猜测它每次选择之前都会有效地重建整个图要显示的正确页面。如果我的假设是正确的,是否有办法代替每次重新构建图,而只是从已存储在内存中的图中选择页面

library(tidyverse)
library(ggforce)

df <- mtcars

hist_plts <- function(data,var,title_vars,pages,x_low_lim = 0,x_up_lim = 50) {
    for (i in 1:pages) {
        plot <- data %>%
            filter({{ var }} >= x_low_lim,{{ var }} < x_up_lim) %>%
            ggplot(
                aes(
                    x = {{ var }} 
                )
            ) +
            geom_histogram(binwidth = 1) +
            labs(
                title = paste0("Count of mpg by ",title_vars),x = "MPG",y = " Count",caption = paste0("Page ",i," of ",pages)
            ) +
            scale_x_continuous() +
            facet_wrap_paginate(
                ~cyl,scales = "free",nrow = 1,ncol = 1,page = i)
        
        print(plot)
    }
}

hist_plts(
    data = df,var = mpg,title_vars = "Cylinders",pages = 3)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。