【问题标题】:Loop over country-waves and save the plots循环遍历国家波并保存地块
【发布时间】:2019-09-18 09:51:59
【问题描述】:

我有一个国家/地区随时间变化的数据集(波),结构如下:

country wave income
1       1     1000
1       2     1400
1       3     900
..     ..     .. 
1       8     40000
2       1     3000
2       2     5432

等等 15 个国家和 8 个波浪。我想在家庭总净收入上运行 foreach country 和 foreach wave qqplot 以首先检测右尾的 Pareto 分布,然后保存该图。我尝试使用以下内容列出国家和波浪

countries<-unique(final_echp$country) 
waves<-unique(final_echp$wave)

然后使用我运行的 foreach 包:

foreach(c=countries)
  foreach(w=waves) %do% { 
    qqnorm(final_echp$hi100_eur)
    qqline(final_echp$hi100_eur)
    } 

但是它崩溃了,因为它运行了几分钟而没有任何结果,我必须打破它。如何进行循环并使用相应的国家波标题保存地块?

谢谢

【问题讨论】:

    标签: r foreach


    【解决方案1】:

    据我了解,您想为一堆国家/地区绘制一个参数并保存图以便以后检查它们。为什么不将它们保存为pdf?让我告诉你怎么做。我打算用ggplot2:

    library(ggplot2)
    library(dplyr)
    
    df <- data.frame(country = c(rep('USA',20), rep('Canada',20), rep('Mexico',20)),
                     wave = c(1:20, 1:20, 1:20),
                     par = c(1:20 + 5*runif(20), 21:40 + 10*runif(20), 1:20 + 15*runif(20)))
    
    countries <- unique(df$country)
    
    plot_list <- list()
    i <- 1
    
    for (c in countries){
      pl <- ggplot(data = df %>% filter(country == c)) +
        geom_point(aes(wave, par), size = 3, color = 'red') +
        labs(title = as.character(c), x = 'wave', y = 'value') +
        theme_bw(base_size = 16)
    
      plot_list[[i]] <- pl
      i <- i + 1
    }
    
    pdf('path/to/pdf')
    pdf.options(width = 9, height = 7)
    for (i in 1:length(plot_list)){
      print(plot_list[[i]])
    }
    dev.off()
    

    生成的 pdf 可以在 path/to/pdf 找到。

    【讨论】:

    • 您的代码完全适用于参数。但我想做的是不绘制参数,而是使用命令 qqnorm 绘制具有正态线的家庭总净收入的 q-q 图。我尝试使用 qqnorm(final_echp$hi100_eur) 而不是 ggplot 重新调整您的代码,但它仍然需要很多时间并且似乎无法正常工作。
    • 粘贴您的数据样本,否则将很难提供帮助。
    • 我认为只是数据框的维度问题,因为一旦我中断执行,就会显示一些图表。如果不写入外部文件,运行dput() 也是不可行的。顺便说一下,它是一个 15(国家)x 8(波浪)矩阵,其中包含家庭总净收入变量。
    猜你喜欢
    • 2020-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-23
    • 2013-08-12
    • 1970-01-01
    • 2016-10-05
    相关资源
    最近更新 更多