Вам нужно собрать длину ваших фреймов данных, один из способов показан ниже, где я собираю 3 фрейма данных в списке:
library(FactoMineR)
library(factoextra)
df1 = subset(iris,Species=="setosa")[,-5]
df2 = subset(iris,Species=="versicolor")[,-5]
df3 = subset(iris,Species=="virginica")[,-5]
X = list(df1=df1,df2=df2,df3=df3)
вы объединяете их, используя do.call(rbind..)
, и метки повторяются имена фрейма данных по количеству строк:
labels = rep(names(X),sapply(X,nrow))
table(labels)
Затем вы строите график, давая столбцу col.ind метки:
pca <- PCA(do.call(rbind,X))
fviz_pca_ind(pca,
geom.ind = "point", # show points only (nbut not "text")
col.ind = labels, # color by groups
palette = c("#00AFBB", "#E7B800", "#FC4E07"),
addEllipses = TRUE, # Concentration ellipses
legend.title = "Groups"
)