R中的共享工作区?

时间:2011-08-15 20:58:27

标签: r

是否有人建议在R中共享工作空间和数据框?我在一家初创公司工作,我们在大型生产环境中工作的经验很少,很多员工都使用相同的数据。

有没有办法设置数据框的权限并共享它们?或者在我们的情况下,只需将数据存储在像MySQL这样的数据库中,然后根据具体情况将其下载到数据框中?

任何有这方面经验的人都会对此提出任何建议!

谢谢!

3 个答案:

答案 0 :(得分:8)

一种方法是将变量通过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

答案 1 :(得分:7)

您可以考虑使用stashR制作托管工作数据集的小型服务器。它比悬挂文件更方便,比一次又一次查询SQL更直接。

至于存储结果,更好的选择是存储可以创建它们的脚本而不仅仅是结果(所谓的可重复研究)并使用VCS管理它们。当然,这在繁重计算的情况下会变得很痛苦,但是人们可以想到一些自动系统会对某些VCS变化做出反应并填充一些中间结果。

答案 2 :(得分:1)

save()和load()是最好的方法。我还使用source()来加载库,以确保在我加载()它们时,使用save()存储的对象得到正确解释。

我喜欢创建所有对象并保存()它们并在后续会话中重用它们。但是,例如,如果我保存了一个xts时间序列对象,在重新加载时,在我执行library(xts)之前,它的元结构将无法正确识别。

要看到这一点,您可以运行

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

加载xts库之前和之后。

因此可以保存()并共享所有类型的对象,但您应该记住在开始重用之前加载相关的库/定义。