image_append на Dynami c количество переменных - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть каталог изображений, и я хочу динамически комбинировать где угодно из 3-10 изображений. Это будет где-то из 3-10 изображений. Я думал создать n переменных и просто передать эти n переменные в image_append. Есть ли способ передать мой список image1, image2, image3 ... в image_append?

library(magick)
these=list.files('../Desktop/',pattern = '.tif') ##list of images, could be 3-10
for (h in 1:3){
assign(paste("image", h, sep = ""), image_read(these[h]) %>%
         image_annotate(.,strsplit(these[h],'_')[[1]][4],color = 'white',size=30))
}
image_append(c(image1,image2,image3)) ##Works, but there will be an unknown number of *image* vars created

combine_images = function(...){z=image_append(c(...));return(z)} ##Function that can combine a dynamic number, but passing ls(pattern='image') does not work

1 Ответ

1 голос
/ 14 апреля 2020

Вместо хранения изображений в глобальной среде, сохраните их в списке. Таким образом, вместо зацикливания вы можете просто lapply свои звонки:

library(magick)

these <- list.files('../Pictures/', pattern = '.tif', full.names = TRUE) 

pictures <- image_append(do.call("c", lapply(these, function(h){
 image_annotate(image_read(h), strsplit(h, '[.]')[[1]][1], color = 'white', size = 30)
 })))

Так что теперь, в моем случае, я получаю следующий результат:

pictures

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...