For Loop In R 不适用于 Plot 函数

For Loop In R not working with Plot function

我正在尝试一种方法来弄清楚如何使用 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])}

任何帮助将不胜感激

你必须做两件事才能让它在 for 循环中工作。

(1) 正如@neilfws 已经在评论中指出的那样,for 循环的输出需要赋值(例如 out[[i]] <-)。

(2) 由于 ggplot 使用惰性评估,仅执行 (1) 将产生相同的情节四十次(总是最后一个情节,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