Как сохранить изображения, используя имя файла данных из CSV-файла в R?

#r #filenames

Вопрос:

У меня есть CSV-файл, data который содержит координаты широты и долготы. Образец:

 Lat    Lon
13.3   100.3
23.2   90.3
 

Используя ключ API, я могу извлекать изображения Google Street View, используя эти координаты, которые сохраняются на моем компьютере вместе с googleway пакетом. Они сохраняются в формате .jpeg.

Приведенный ниже код перебирает координаты data , получает связанное изображение и сохраняет их, например image_00001.jpeg , image_00002.jpeg как, и т. Д.

 jpeg('image_d.jpeg')
purrr::map2(data$Lat, data$Lon, function)
dev.off()
 

Однако вместо сохранения этих файлов, например image_00001.jpeg , я хочу, чтобы имя файла было координатами, соответствующими изображению. Так, например , если изображение из 13.3, 100.3 пары координат/строки из data , я хочу сохранить файл как 13.3-100.3.jpeg .

Кто-нибудь знает, как это сделать?

Комментарии:

1. В вашем function вам просто нужно сохранить файл как paste0(Lat, "-", Lon, ".jpeg") или что-то подобное

2. Я не уверен, что вам нужно было сделать 3 разных поста для того, что по сути является одним и тем же вопросом.

3. @AndrewGustar пожалуйста, не могли бы вы привести пример, изменив исходный код? Поскольку я не уверен, куда поместить это в функцию

Ответ №1:

Как заявил Эндрю Гастар в своем комментарии. Вы можете использовать paste в своем цикле для создания последовательных имен файлов ваших данных.

 data <- data.frame(Lat = c(13.3, 23.2),
                   Lon = c(100.3, 90.3))
data
   Lat   Lon
1 13.3 100.3
2 23.2  90.3
 
sapply(1:nrow(data), function(x) return(paste0(paste(data[x,], collapse = "-"), ".jpeg")))
[1] "13.3-100.3.jpeg" "23.2-90.3.jpeg"
 

Комментарии:

1. Спасибо! В итоге я воспользовался решением, предложенным Эндрю Гастаром, но, возможно, вы можете чем — то помочь. Я изменил последние 3 строки своего кода jpeg(paste0(data$Lat, "-", data$Lon, ".jpeg")) purrr::map2(data$Lat, data$Lon, MyFunction) dev.off() , но он сохраняет только последнее изображение на моем жестком диске, а не все из них. Вы знаете, как это исправить?

2. jpeg() не векторизован, поэтому вам нужно перебирать каждую строку в вашем векторе.

3. Не могли бы вы привести пример, пожалуйста? Например, если я использовал jpeg('imaged.jpeg') вместо jpeg(paste0(data$Lat, "-", data$Lon, ".jpeg")) , то он сохраняет каждое изображение (но не сохраняет их с нужным именем файла).