成為 R 用戶大約一年了 - 所以還有很多東西要學習。無論如何,我的問題是:
- 如何匯出串列中的 ggplots 并根據它們的位置專門命名它們。
下面是我用我所在的位置創建的虛擬資料。
location <- c('obs1', 'obs2', 'obs3', 'obs4', 'obs5', 'obs6')
percentage <- c(40, 30, 20, 40, 20, 30)
mean_percentage <- c(30, 30, 30, 30, 30, 30)
dat1 <- data.frame(location, percentage, mean_percentage)
plot.func <- function(dat) {
dat %>%
pivot_longer(cols = 2:3, names_to = 'place', values_to = 'percent') %>%
ggplot(aes(x = place, y = percent, fill = place))
geom_bar(stat = 'identity')
}
myplots <- list()
myplots <- lapply(1:nrow(dat1), function(i) plot.func(dat1[i,]))
上面的代碼生成名為“myplots”的串列,其中包含 6 個 ggplots。
我想使用基于位置變數的名稱單獨匯出這些。
例如:obs1.barchart.pdf、obs2.barchart.pdf、obs3.barchart.pdf等。
我嘗試了各種不同的方法,但都在兜圈子。非常感謝任何幫助。
最佳,回旋鏢
uj5u.com熱心網友回復:
一種選擇是命名您的繪圖串列并使用purrr::imap或purrr::iwalk回圈遍歷繪圖串列以保存它們。
為方便起見,我使用 split 來首先拆分您的資料,location這將創建一個命名的資料框串列,在將您的函式lapply 傳遞給使用之前,我將在該串列上應用您的函式iwalk以保存繪圖ggsave:
library(ggplot2)
library(dplyr)
library(tidyr)
split(dat1, dat1$location) |>
lapply(plot.func) |>
purrr::iwalk(~ ggsave(paste(.y, "barchart", "pdf", sep = "."), plot = .x))
#> Saving 7 x 5 in image
#> Saving 7 x 5 in image
#> Saving 7 x 5 in image
#> Saving 7 x 5 in image
#> Saving 7 x 5 in image
#> Saving 7 x 5 in image
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/493098.html
