我正在嘗試一種方法來弄清楚如何使用 for 回圈一次列印多個圖,因為我對 R 非常陌生,我似乎無法找到一種方法來做到這一點
我有 40 個要通過 for 回圈繪制的主要組件,但我只能通過每次呼叫函式來單獨完成;for 回圈什么都不做
以下是顯示或繪制主成分的功能
showPrincipalComponents <- function(PCNumber) {
tidied_pca %>%
filter(PC == PCNumber) %>%
top_n(11, abs(Contribution)) %>%
mutate(Tag = reorder(Tag, Contribution)) %>%
ggplot(aes(Tag, Contribution, fill = Tag))
geom_col(show.legend = FALSE, alpha = 0.8)
theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.5),
axis.ticks.x = element_blank())
labs(x = "Personal attributes",
y = "Principal Component Importance")
}
這有效:
showPrincipalComponents(comp[1])
showPrincipalComponents(comp[2])
showPrincipalComponents(comp[3])
showPrincipalComponents(comp[4])
這不(執行而不回傳任何內容):
x=1:40
for (i in x){showPrincipalComponents(comp[i])}
任何幫助,將不勝感激
uj5u.com熱心網友回復:
您必須做兩件事才能使其for回圈作業。
(1) 正如@neilfws 在評論中已經指出的那樣,for回圈的輸出需要被分配(例如out[[i]] <-)。
(2) 由于 ggplot使用惰性求值,僅執行 (1) 將產生相同的圖 40 次(始終是最后一個圖i = 40)。如果您想堅持使用for回圈而不是回圈,則lapply可以將函式呼叫包裝到eval(bquote())并評估.(i)。
x <- 1:40
out <- vector("list", length = length(x))
for (i in x) {
out[[i]] <- eval(bquote(
showPrincipalComponents(comp[.(i)])
))
}
out
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/481517.html
