有没有关于在R中共享工作空间和数据框的建议?我在一家初创公司工作,我们没有经验处理大型生产环境中多个员工使用相同数据的情况。
是否有方法设置数据框的权限并共享它们?或者像MySQL这样的数据库只需按案例下载数据帧,我们这种情况的机构就是这样存储他们的数据吗?
有经验的人在这方面提供任何提示都将不胜感激!
谢谢!
有没有关于在R中共享工作空间和数据框的建议?我在一家初创公司工作,我们没有经验处理大型生产环境中多个员工使用相同数据的情况。
是否有方法设置数据框的权限并共享它们?或者像MySQL这样的数据库只需按案例下载数据帧,我们这种情况的机构就是这样存储他们的数据吗?
有经验的人在这方面提供任何提示都将不胜感激!
谢谢!
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
install(fortunes); fortunes::fortune("Yoda")
来确保一切 :) - Dirk Eddelbuettel至于存储结果,更好的选择是存储可以生成结果的脚本(所谓的可重复研究),并使用版本控制系统进行管理。当然,在进行大量计算时,这会变得很麻烦,但是可以考虑一些自动系统,以响应某些版本控制系统的更改,并填充一些中间结果的基础。
使用save()和load()是最好的方法。我还使用source()来加载库,以确保在load()时正确解释使用save()存储的对象。
我喜欢创建所有对象并将它们保存起来,在后续会话中重复使用它们。但是,例如,如果我保存了一个xts时间序列对象,在重新加载时,其元结构将无法正确识别,直到我执行library(xts)。
要查看这个问题,您可以运行
str(xts1) #(xts1 is your xts object)
在加载xts库之前和之后。
因此,可以保存()和共享各种对象,但应记住在开始重用之前加载相关的库/定义。
RMySQL
包以实现无缝数据库访问。对我来说,这似乎是更好的解决方案,因为数据库将为您管理文件锁等。 - Ari B. Friedman