我正在使用dplyr
管道对数据集中的组运行 pcas。我从 开始group_split
,所以正在处理一个列表。为了运行该prcomp()
函数,只能numeric
包含每个列表的列,但我希望将factor
列带回以在最后进行绘图。我曾尝试在管道的中途使用保存中间输出{. ->> temp}
,但由于它是一个列表,我不知道如何在绘图时索引分组列。
library(tidyverse)
library(ggbiplot)
iris %>%
group_split(Species, keep = T) %>% #group by species, one pca per species
{. ->> temp} %>% # save intermediate output to preserve species column for use in plotting later
map(~.x %>% select_if(is.numeric) %>% select_if(~var(.) != 0) %>%
prcomp(scale. = TRUE))%>% #run pca on numeric columns only
map(~ggbiplot(.x), label=temp$Species)#plot each pca, labeling points as species names form the temporary object
这可以为iris
数据集中的每个物种生成一个 pca 图,但是由于temp$species = NULL
,这些点没有被标记。