Я использую проект RStudio для работы с конфиденциальными данными (т.е. проект, связанный с рабочим каталогом, без контроля версий). Я хочу поделиться своим сценарием confidential_script.R
и проектом confidential_project.Rproj
с соавтором без обмена реальными данными, включая временные файлы или метаданные. Я стараюсь не сохранять и не делиться файлами .RData
. Однако RStudio в Windows автоматически создает .Rproj.user
скрытую папку с метаданными проекта.
Могу ли я поделиться файлами проекта RStudio, не подвергая риску конфиденциальную информацию?
Я работаю через удаленное подключение к защищенному серверу, который сам по себе не подключен к Интернету, поэтому, к сожалению, любое интернет-решение не подходит... Я могу экспортировать только отдельные файлы с этого удаленного сервера.
Лучший способ управлять конфиденциальными зависимостями — объявить их как объекты R в верхней части скрипта и устранить необходимость в совместном использовании файлов метаданных, таких как проект R или проект RStudio.
В идеале нужно создать тестовую версию конфиденциальной информации, которая содержит случайные/анонимные данные, разработать несколько тестов/отчетов для проверки и включить эти элементы в сценарий R, чтобы другие сотрудники могли убедиться, что он работает, прежде чем использовать его с живыми данными.
Сценарий, параметры, тестовые данные и тестовые примеры делают сценарий полностью воспроизводимым.
Пример: загрузить и объединить файлы статистики покемонов
Следующий пример сценария загружает статистику для первых семи поколений покемонов и объединяет их в единый фрейм данных для последующего анализа.
# name of zip file assigned to theZipFile object
theZipFile <- "https://raw.githubusercontent.com/lgreski/pokemonData/master/pokemonData.zip"
download.file(theZipFile,
"pokemonData.zip",
method = "curl",mode = "wb")
unzip("pokemonData.zip")
thePokemonFiles <- list.files("./pokemonData",
full.names=TRUE)
thePokemonFiles
pokemonData <- lapply(thePokemonFiles,function(x) read.csv(x))
# a list of 7 data frames
summary(pokemonData)
pokemonData <- do.call(rbind,pokemonData)
summary(pokemonData)
Если вам нужно обмениваться кодами, почему бы вам не использовать службы контроля версий? Rstudio имеет хорошую интеграцию с git/subversion.