3
假設我有以下數據框:創建使用purrr殘差圖的矩陣和ggplot
library(tidyverse)
fit <- lm(speed ~ dist, data = cars)
select(broom::augment(fit), .fitted:.std.resid) -> dt
names(dt) <- substring(names(dt), 2)
我想創建一個使用purrr
殘差圖的網格。例如,我對迄今2個診斷圖的公式:
residual <- function(model) {ggplot(model, aes(fitted, resid)) +
geom_point() +
geom_hline(yintercept = 0) +
geom_smooth(se = FALSE)}
stdResidual <- function(model) {ggplot(model, aes(fitted, std.resid)) +
geom_point() +
geom_hline(yintercept = 0) +
geom_smooth(se = FALSE)}
而且我存儲在列表中,我打算對強化數據集dt
運行的公式。
formulas <- tibble(charts = list(residual, stdResidual))
# A tibble: 2 x 1
charts
<list>
1 <fun>
2 <fun>
現在我需要通過dt
到列chart
的每個元素在formulas
。我其實也試圖結合使用gridExtra
,但現在我會滿意,如果我可以至少渲染他們兩個。我想我應該運行像
pwalk(list(dt, formulas), ???)
但我不知道什麼功能,我應該在???
使用渲染圖。
設防是有利於掃帚棄用。您的圖的代碼不是函數,您不能將其應用於數據集。你需要寫函數。我懷疑這篇文章可能與你想要做的事情有關,如果你向下掃描:https://github.com/egoulddo/many_models/blob/master/many_models.md –
@qqq我編輯過我的問題,但我不知道如何使用您的鏈接來解決我的問題。在這種情況下,他們有一個數據集的子集在相同的模型上運行(順便說一句,我想我會更容易使用'split(。$ var)')。在我的情況下,我有相同的數據框來運行多個函數。 – Dambo
'purrr :: invoke_map(.f = formula,.x = list(list(dt)))'然後在'gridExtra :: grid.arrange'中使用結果列表中的'ggplot'對象 – Brian