На основе предоставленных вами образцов данных можно найти решение для сохранения каждого графика в одном PDF-файле. Чтобы сделать упражнение воспроизводимым, я создал datalist
с введенными вами данными. В вашей реальной задаче у вас должно быть datalist
с именами, чтобы добавлять заголовки к графикам. Также были недоступны некоторые данные для графиков, например datastudyarea1
, но заполнить эту часть кода для вас не составит труда. Вот набросок:
library(mixOmics)
#Data
datalist <- list(df1 = structure(list(OID = c(-1, -1, -1, -1, -1, -1), POINTID = c(1,
2, 3, 4, 5, 6), WETLAND = c("no wetl", "no wetl", "no wetl",
"wetl", "wetl", "wetl"), TPI200 = c(70, 37, 45, 46, 58, 56),
TPI350 = c(67, 42, 55, 58, 55, 53), TPI500 = c(55, 35, 45,
51, 53, 51), TPI700 = c(50, 29, 39, 43, 49, 49), TPI900 = c(48,
32, 41, 46, 47, 46), TPI1000 = c(46, 16, 41, 36, 46, 46),
TPI2000 = c(53, 17, 53, 54, 54, 54), TPI3000 = c(47, 35,
47, 47, 47, 47), TPI4000 = c(49, 49, 49, 49, 49, 49), TPI5000 = c(63,
63, 63, 62, 62, 61), TPI2500 = c(48, 26, 48, 49, 49, 49)), row.names = c(NA,
6L), class = "data.frame"), df2 = structure(list(OID = c(-1,
-1, -1, -1, -1, -1), POINTID = c(1, 2, 3, 4, 5, 6), WETLAND = c("no wetl",
"no wetl", "no wetl", "wetl", "wetl", "wetl"), TPI200 = c(70,
37, 45, 46, 58, 56), TPI350 = c(67, 42, 55, 58, 55, 53), TPI500 = c(55,
35, 45, 51, 53, 51), TPI700 = c(50, 29, 39, 43, 49, 49), TPI900 = c(48,
32, 41, 46, 47, 46), TPI1000 = c(46, 16, 41, 36, 46, 46), TPI2000 = c(53,
17, 53, 54, 54, 54), TPI3000 = c(47, 35, 47, 47, 47, 47), TPI4000 = c(49,
49, 49, 49, 49, 49), TPI5000 = c(63, 63, 63, 62, 62, 61), TPI2500 = c(48,
26, 48, 49, 49, 49)), row.names = c(NA, 6L), class = "data.frame"))
Теперь код:
#Function
custom_splsda <- function(datalist, ncomp, keepX, ..., Xcols, Ycol){
Y <- datalist[[Ycol]]
X <- datalist[Xcols]
res <- splsda(X, Y, ncomp = ncomp, keepX = keepX, ...)
res
}
#Create model_list, you must have the object created
model_list <- lapply(datalist, custom_splsda,
ncomp = 2, keepX = c(5, 5),
Xcols = 4:8, Ycol = "WETLAND")
#Iterate to save
#Create pdf
pdf('Summaryplots.pdf',width = 14)
for(i in 1:length(model_list))
{
#Create background
background <- background.predict(model_list[[i]],
comp.predicted = 2,
dist = "max.dist")
#Plot
plotIndiv(model_list[[i]], comp = 1:2,
ind.names = FALSE, title = paste0("Maximum distance ",names(model_list)[i]),
legend = TRUE, background = background,cex = 0.5)
}
#Turn devices off
dev.off()
Этот код создаст файл pdf со всеми сохраненными на нем графиками. Немного подробностей: paste0("Maximum distance ",names(model_list)[i])
позволяет добавить заголовок, используя имя объекта в model_list
. Также в исходном коде указано group = datastudyarea1$WETLAND
. Я удалил, потому что у меня нет данных об этом, но вы можете добавить еще раз, чтобы дополнить желаемый результат. Наконец, я показываю результаты, сохраненные в pdf. Вот pdf с двумя слайдами:
введите описание изображения здесь