我已經創建了許多回圈 ggplot 腳本的圖形,現在我想將相同的軸標題和文本添加到圖形的選擇中(不要過多地涉及它,最初制作帶有空 y 軸的圖形是有意義的,因為它們中的大多數將保持為空)。
將標題添加到單個圖表的代碼可以正常作業,但是當我嘗試通過回圈執行此操作時出現錯誤。抱歉,我沒有提供問題中的資料來重現,我需要幾天時間才能弄清楚如何做到這一點,而且資料不公開
圖表存盤在串列“p”中并呼叫
p$A, p$B, p$C, etc
我不想為每個圖形單獨執行此操作,而是想同時編輯其中多個圖形的 Y 軸。我首先創建了只包含我想要更改的圖形的物件
change.plots <- c(p$B, p$G, p$J, p$S)
我嘗試了以下代碼,它適用于單個圖表
p$G
labs(y = "Loudness")
theme(axis.text.y = element_text())
但是當我嘗試通過這個回圈
temp <- list()
for(i in 1:4) {
temp[[i]] <- change.plots[i]
labs(y = "Loudness")
theme(axis.text.y = element_text())
}
我收到以下錯誤
change.plots[i] labs(y = "Loudness") 中的錯誤:二元運算子的非數字引數
誰能告訴我回圈哪里出錯了?謝謝
uj5u.com熱心網友回復:
問題是您使用單個方括號[,它將回傳一個包含一個元素的串列。因此你得到一個錯誤。相反,您必須使用方括號[[來提取繪圖串列的元素,這將回傳一個 ggplot 物件。有關兩者之間的區別的更多資訊[,[[請參閱這篇文章。
注意:不是將要更改的繪圖存盤在單獨的串列中,而是像我在下面的代碼中所做的那樣,回圈遍歷要更改的繪圖名稱串列。
使用一些假的隨機示例資料:
library(ggplot2)
# Example plots
p <- lapply(1:4, function(x) ggplot(data.frame(x = seq(x), y = seq(x)), aes(x, y)) geom_point())
names(p) <- LETTERS[1:4]
# Names of plots to change
change.plots <- c("A", "C")
temp <- list()
for(i in change.plots) {
temp[[i]] <- p[[i]]
labs(y = "Loudness")
theme(axis.text.y = element_text())
}
temp
#> $A

#>
#> $C

代替 for 回圈,您可以使用以下方法獲得相同的結果lapply:
lapply(p[idx], function(x) x labs(y = "Loudness") theme(axis.text.y = element_text()))
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/456891.html
