2012-06-15 2 views
11

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

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

configuration.txt:

123456, 654321 
409,255,265 
1 

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

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

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

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

+0

Просто напишите конфигурационный файл как файл '.r', содержащий код точно так же, как вы его написали, а затем' source() 'it. Затем переменные будут определены в вашей среде. – Andrie

+3

Аналогичный вопрос: http://stackoverflow.com/q/5272846/602276 – Andrie

+0

Как пользователь/веб-разработчик R, я бы предложил JSON. Существуют пакеты 'rjson' и' RJSONIO' для соответствующей (де) сериализации. Но IMO 'source()' способные R-скрипты - лучший способ пойти, как предложил @ Andri. – aL3xa

ответ

21

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

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

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

В другом использовании сценария:

source("config.R") 

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

+0

+1 Все. Добро пожаловать в SO. – Andrie

+0

Опять же, я действительно об этом не думал. Хотя это очень просто. Даже для последующего использования с вводом, полученным на веб-сайте, это все равно можно использовать отлично, я думаю. –

+1

Это хорошо, но в идеале я хотел бы загрузить настройки в отдельное пространство имен, чтобы я не загрязнял список глобальных переменных. Я предполагаю, что могу определить свой собственный список имен внутри файла .R ... – Leonid

0

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

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

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