Общие рабочие пространства в R? - PullRequest
7 голосов
/ 16 августа 2011

У кого-нибудь есть рекомендации по совместному использованию рабочих пространств и фреймов данных в R?Я работаю на старте, и у нас мало опыта работы в крупных производственных средах, где множество сотрудников используют одни и те же данные.

Есть ли способ установить разрешения для фреймов данных и поделиться ими?Или организации в нашей ситуации просто хранят свои данные в базе данных, такой как MySQL, и просто загружают их в фреймы данных на индивидуальной основе?

Любые советы будут в значительной степени востребованы теми, кто имеет опыт в этой области!

Спасибо!

Ответы [ 3 ]

8 голосов
/ 16 августа 2011

Один из подходов состоит в том, чтобы вывести переменные через save() в общую папку и сделать так, чтобы другие считывали переменные через load() - это дает дополнительные преимущества сжатия и быстрых операций чтения / записи для двоичных режимов.

Конечно, вы также можете сериализовать в файл или базу данных.Или, если необходимо, даже для читаемых человеком файлов, но они будут самыми медленными для чтения обратно.

Редактировать Согласно комментариям, вот как изменить режимы файлов послесохранить:

R> foo <- 1:3
R> save(foo, file="/tmp/SimpleDemo.RData")
R> Sys.chmod("/tmp/SimpleDemo.RData", mode="0444")
R> system("ls -l /tmp/SimpleDemo.RData")
-r--r--r-- 1 edd edd 62 2011-08-15 16:26 /tmp/SimpleDemo.RData
7 голосов
/ 16 августа 2011

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

Что касается хранения результатов, лучшим вариантом будет хранить сценарии, которые могут их создавать, а не только результаты (так называемые воспроизводимые исследования) и управлять ими с помощью VCS. Это, конечно, становится болезненным в случае тяжелых вычислений, но тогда можно подумать о некоторой автоматической системе, которая реагирует на определенные изменения VCS и заполняет некоторую базу промежуточных результатов.

1 голос
/ 16 августа 2011

save () и load () - лучший способ сделать это. Я дополнительно использую source () для загрузки библиотек, чтобы убедиться, что объекты, которые я храню с помощью save (), интерпретируются правильно, когда я их загружаю () обратно.

Мне нравится создавать все мои объекты, сохранять () их и повторно использовать в следующем сеансе. Но, например, если я сохранил объект временного ряда xts после перезагрузки, его мета-структура не будет правильно идентифицирована, пока я не выполню библиотеку (xts).

Чтобы увидеть это, вы можете запустить

str(xts1) #(xts1 is your xts object) 

до и после загрузки библиотеки xts.

Таким образом, можно сохранять () и совместно использовать все виды объектов, но вы должны не забыть загрузить связанную библиотеку / определение, прежде чем начать ее повторное использование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...