запрограммируйте функцию GET для повторения с течением времени, сохраняя данные с разными именами

#r #api #loops #automation

Вопрос:

Я работаю с API, который обновляет их данные каждые 5 секунд. Я хочу, чтобы мой код повторялся каждую минуту, чтобы получать разные файлы с обновленными данными. Одного цикла недостаточно, мне нужно, чтобы каждый файл сохранялся с другим именем (data1, data2, data3…). Я не смог найти хорошего способа сделать это.

     url<-(API URL)
    res=GET(url, authenticate("username", "password"))

    result<-xmlParse(file = res)
    node<-xmlRoot(result)
 

Это код, который мне нужно скопировать и сохранить в разных файлах, поэтому мне понадобятся имена res, результата и узла, которые будут меняться каждый раз, когда код запускается в цикле синхронизации.

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

1. Как вы запускаете цикл синхронизации? Это в R или вы делаете это извне?

2. Я делаю это в R. Я не уверен, каким был бы лучший способ запустить цикл. Что касается изменения имен, мне было интересно, могу ли я настроить их так, чтобы они называли себя после того, как они были запущены, как res(время) (например, res1150. res1151, res1152…).

3. Можете ли вы отредактировать свой пост, чтобы включить код цикла?

4. Я еще не закодировал это… Я новичок в кодировании. Я читал об использовании cron для планирования каждой минуты, если только нет более эффективного способа сделать это.

Ответ №1:

Вы можете использовать текущую дату и время в качестве имени файла при записи данных в csv, чтобы файл каждый раз был уникальным.

 url<-(API URL)
res=GET(url, authenticate("username", "password"))
result<-xmlParse(file = res)
node<-xmlRoot(result)
write.csv(node, sprintf('file_%s.csv', Sys.time()), row.names = FALSE)
 

Вы можете использовать cron для запуска этого сценария с любым интервалом.

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

1. Привет, я использую cron и хорошо работаю, но я борюсь с функцией sprintf. Я получаю следующую ошибку: В sprintf(«‘файл_%s.csv’, : один аргумент не используется форматом ‘файл_%s.csv’

2. Вы уверены, что скобки правильно закрыты? Какой именно код вы используете?

3. Они были должным образом закрыты. В любом случае, я попробовал другую функцию, и она сработала. В любом случае, спасибо вам!