Чтение и использование пользовательского файла конфигурации

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

Ввод этого файла, например:

конфигурация.txt:

123456, 654321
409,255,265
1

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

timestart <- 123456
timeend <- 654321
exclude <- c(409,255,265)
paid <- 1

Макет файла конфигурации не является фиксированным, но он должен содержать время начала (unix), время окончания (unix), массив с числами для исключения и другие поля. В конце концов, он должен быть создан из полей, которые пользователь указывает в графическом интерфейсе. Я не знаю, какое форматирование лучше всего подходит для этого случая, но как только я заработаю эти основы, я не думаю, что это будет большой проблемой.

Но это затруднит определение того, какие значения принадлежат какой переменной.


person Max van der Heijden    schedule 15.06.2012    source источник
comment
Просто напишите файл конфигурации в виде .r файла, содержащего точно такой же код, как вы его написали, а затем source() его. Затем переменные будут определены в вашей среде.   -  person Andrie    schedule 15.06.2012
comment
Аналогичный вопрос: stackoverflow.com/q/5272846/602276   -  person Andrie    schedule 15.06.2012
comment
Как пользователь R/веб-разработчик, я бы предложил JSON. Существуют пакеты rjson и RJSONIO для соответствующей (де)сериализации. Но сценарии IMO source()able R - лучший способ, как предложил @Andrie.   -  person aL3xa    schedule 15.06.2012


Ответы (2)


Действительно, как предложил Андри, проще всего это сделать с помощью конфигурационного файла .r. Я полностью упустил этот вариант!

Таким образом, просто создайте файл .r с уже имеющимися в нем переменными:

#file:config.R
timestart <- 123456
timeend <- 654321
exclude <- c(409,255,265)
paid <- 1

В другом скрипте используйте:

source("config.R")

И вуаля. Спасибо, Андри!

person Max van der Heijden    schedule 15.06.2012
comment
Опять же, я действительно не думал об этом. Хотя это очень просто. Даже для последующего использования с вводом, полученным с веб-сайта, я думаю, это все еще можно использовать идеально. - person Max van der Heijden; 15.06.2012
comment
Это хорошо, но в идеале я хотел бы загрузить настройки в отдельное пространство имен, чтобы не засорять список глобальных переменных. Я полагаю, что мог бы определить свой собственный именованный список внутри файла .R... - person Leonid; 25.04.2017

Другой альтернативой может быть использование пакета config. Это позволяет задавать значения конфигурации, которые должны выполняться в соответствии с рабочей средой (производство, тестирование и т. д.). Доступ ко всем параметрам осуществляется через список и загружается из файла конфигурации в текстовом формате YAML.

Более подробную информацию и примеры конфигурации можно найти здесь: https://cran.r-project.org/web/packages/config/vignettes/introduction.html

Если вы хотите загрузить текстовый файл конфигурации JSON, TOML, YAML или INI, см. также пакет configr. .

person Giancarlo    schedule 19.02.2018