загрузка изображений с использованием библиотеки curl в цикле по фрейму данных

Tornadofx datepicker() в основном использует класс java DatePicker, расположенный в javafx.scene.control.DatePicker.java . DatePicker продолжается от ComboBoxBase, поэтому значение всегда является типом LocalDate.

Чтобы изменить формат, существует метод, определенный в классе DatePicker с именем setConverter(), который принимает аргумент, набранный StringConverter. Это можно сделать с помощью метода LocalDateStringConverter(), определенного в javafx.util.converter.LocalDateStringConverter.java . Это в основном принимает два аргумента, чтобы получить funtional, и оба являются типом DateTimeFormatter, первый аргумент для форматирования и второй для синтаксического анализа. Здесь для достижения моей цели я видел, что для получения желаемого результата достаточно одного форматирования.

DateTimeFormatter - это класс, определенный в java.time.format.DateTimeFormatter.java , который является форматированием для печати и разбора объектов даты и времени. ofPattern() метод, определенный в нем, принимает строковый шаблон, подобный "dd-MM-yyyy", который здесь является моим желаемым. Таким образом, мы можем сделать val dateFormatter = DateTimeFormatter.ofPattern("dd-MM-yyyy")

Теперь мы можем применить setConverter(LocalDateStringConverter(dateFormatter, dateFormatter)), который является вызовом метода java get set ", или мы можем использовать« синтетические свойства Котлина «как converter = LocalDateStringConverter(dateFormatter, dateFormatter), что предпочтительнее.

Дается рабочий фрагмент:

datepicker() {
                 ...

                 val pattern = "dd-MM-yyyy"
                 val dateFormatter = DateTimeFormatter.ofPattern(pattern)
                 converter = LocalDateStringConverter(dateFormatter, dateFormatter)
              }

Выходной снимок:

1
задан Jason 18 January 2019 в 23:20
поделиться

1 ответ

Вот элегантный способ решения вашей проблемы с помощью library(purrr):

library(tidyverse)
library(curl)

dat <- structure(
  list(markerID = c(189307136L, 189307145L, 183337360L), 
       date = structure(c(17907, 17910, 17910), class = "Date"), 
       tail = c("https://drive.google.com/uc?export=download&id=13S9s_j6acfndEz4HbpG-v2ZRyT8LLgji", 
                "https://drive.google.com/uc?export=download&id=19XpBTLws94wtCtgPF6oXKM_GZ_cV4oMf", 
                "https://drive.google.com/uc?export=download&id=1I5zA8tJdEv26EzI9rwBSN5tVsASyT4Cl"), 
       frontPop = c("https://drive.google.com/uc?export=download&id=1lJgl3hin9sWQcV40aJgdYPQM6jzch2Lb", 
                    "https://drive.google.com/uc?export=download&id=1QdB1KmyHrlKkTlux0fkyI1Aw-Pe15sYF", 
                    "https://drive.google.com/uc?export=download&id=1xqNT9CPVfMj2ksxqMONGbWXyJKaKtLuR"), 
       backPop = c("https://drive.google.com/uc?export=download&id=1YAe4S7_LIrLsbOW2qCBuWjyOr_SgT54T", 
                   "https://drive.google.com/uc?export=download&id=1QOC8rPDjWfy6PVSaXFycf4jDyUnV-Vbv", 
                   "https://drive.google.com/uc?export=download&id=1Gyo4lXgp0nXbsdd0jA_kk1m2jW8RGGIY")), 
  class = c("tbl_df", "tbl", "data.frame"), 
  row.names = c(NA, -3L))

read_and_title <- as_mapper(~curl_download(url = ..4, 
                                           destfile = paste0(..1,"_",..2,"_",..3,".png")))

dat %>% 
  gather(key = "photo_type", value = "url", 3:5) %>% 
  pmap_chr(read_and_title)
#> [1] "189307136_17907_tail.png"     "189307145_17910_tail.png"    
#> [3] "183337360_17910_tail.png"     "189307136_17907_frontPop.png"
#> [5] "189307145_17910_frontPop.png" "183337360_17910_frontPop.png"
#> [7] "189307136_17907_backPop.png"  "189307145_17910_backPop.png" 
#> [9] "183337360_17910_backPop.png"

Создано в 2019-01-18 с помощью пакета представитель (v0.2.1 )

0
ответ дан dylanjm 18 January 2019 в 23:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: