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