1

ggplotと を使用してlapply、次のように一連のプロットを生成しました。

makeplot <- function(data){

    require(ggplot2)
    require(dplyr)

    ggplot(data,aes(x=num,y=cat3, fill=cat3)) +
    facet_wrap(~cat2)
    # etc...
}

plot_list <- lapply(split(data, interaction(data[,c("province","cat1")]), drop = TRUE), makeplot)

次のように単純化できる大きなデータ フレームを使用しています。

data <- data.frame(
    province = sample(c("1","2","3","4")),
    cat1 = sample(c("health","education","banks","etc")),
    cat2 = sample(c("winter","spring","summer","fall")),
    cat3 = sample(c("1 hour","2 hours","4 hours","8 hours")),
    Y = sample(1:100))

これにより、次のようなプロットのリストが生成されます。

プロット リスト

ggsaveここに従って、このリストを印刷または出力しようとしています: Saving plots within lapply .

ただし、結果のプロットをエクスポート/印刷しようとすると、lapplyループまたは単純なprintステートメントのいずれであっても、次のエラーが返されます。

lapply(plot_list,print)

Error: `quo` must be a quosure
Call `rlang::last_error()` to see a backtrace

残念ながら、クォーシュアに関する R のドキュメントでは、有益な洞察が得られませんでした。私は開発者ではなく、ほとんどのドキュメントをよく理解していません。誰でも私を助けることができますか?

lapply私は当初、複雑なフィルタリングをあまり行わずにこれを投稿しました。役立つ場合に備えて、現在提供しています。参考までに、実際のデータ フレームheadは次のようになります。

~season,                          ~fac_type,         ~trav_cat,       ~avg_pc_pop,                                             ~loop,
"Monsoon season",       "All financial institutions", "0 to 30 minutes",  0.41395948733655,       "Monsoon season All financial institutions",
"Normal season",            "All health facilities", "0 to 30 minutes", 0.426855030030894,            "Monsoon season All health facilities",
"Other season",                    "All hospitals", "1 to 2 hours", 0.301967752836744,                    "Monsoon season All hospitals",
"Monsoon season", "Commercial and development banks", "4 to 8 hours", 0.385783483483483, "Monsoon season Commercial and development banks",
"Normal season",            "District Headquarters", "16 to 32 hours", 0.270673828371869,            "Monsoon season District Headquarters",
"Other season",             "Government hospitals", "1 to 2 hours", 0.263825993199371,             "Monsoon season Government hospitals"
4

0 に答える 0