Если вы используете map2()
и передаете аргумент .y
в качестве списка видов, вы можете получить желаемый результат.Обратите внимание, что в исходном коде аргумент labels
находился вне функции ggbiplot()
и был проигнорирован.
library(tidyverse)
library(ggbiplot)
iris %>%
group_split(Species, keep = T) %>%
{. ->> temp} %>%
map(~.x %>%
select_if(is.numeric) %>%
select_if(~var(.) != 0) %>%
prcomp(scale. = TRUE)) %>%
map2(map(temp, "Species"), ~ggbiplot(.x, labels = .y))
В ответ на вашкомментарий, если вы хотите добавить третий аргумент, вы можете использовать pmap()
вместо map2()
.В приведенном ниже примере pmap()
передается (вложенный) список данных для аргументов ggbiplot()
.Обратите внимание, что я изменил переменную new
, чтобы она была коэффициентом, а не постоянной для групп.
iris %>%
mutate(new = factor(sample(1:3, 150, replace = TRUE))) %>%
group_split(Species, keep = T) %>%
{. ->> temp} %>%
map(~.x %>%
select_if(is.numeric) %>%
select_if(~var(.) != 0) %>%
prcomp(scale. = TRUE)) %>%
list(map(temp, "Species"), map(temp, "new")) %>%
pmap(~ ggbiplot(pcobj = ..1, labels = ..2, groups = ..3))