[英]Issues reading .mdb files in R
我正在尝试阅读R中的一系列Microsoft Access数据库。我从使用mdb-tools的Hmisc包中找到了mdb.get函数。
这是我的一个特定.mdb文件的工作流程
system("wget http://www.dgis.salud.gob.mx/descargas/zip/BDSS_2004.zip")
unzip("BDSS_2004.zip")
mdb.get("SECTORIAL2004.mdb")
Can't alloc filename
Couldn't open database.
named list()
Warning message:
running command 'mdb-tables -1 SECTORIAL2004.mdb' had status 1
我试图直接使用System()传递突击队给mdb-tables命令,但我得到非常相似的结果。
system("mdb-tables SECTORIAL2004.mdb")
Can't alloc filename
Couldn't open database.
主要问题是,当我直接在终端中执行此操作时,它对于相同文件也可以正常工作。 我想我可以使用shell脚本来做到这一点,但我宁愿在R中完成它。任何帮助将不胜感激。
编辑
我忽略了说我在RStudio中运行此代码,我尝试仅在R Terminal中运行它,并且它起作用了,因此使我认为它与mdb-tools的文件路径或类似的内容有关那。 话虽这么说,我仍然希望能够在RStudio中做到这一点。 谢谢!
...我试图重现您的错误,但对我来说一切正常。
从错误消息(“无法分配文件名”)和您所说的内容(“ 一系列 Microsoft Access数据库”)来看,我敢打赌您正在达到R可以处理的内存限制。
这里有一些建议可以帮助您:
您可能可以使用rm
释放一些无用的东西。 在加载文件之前,运行gc()
触发垃圾回收器,因此可以确保所有可用内存都可用。 这可能足以解决您的问题。
如果还不够的话:一次依次导入mdb文件,然后将它们以另一种格式(例如默认的.RData
)保存在硬盘中,并完全清除工作区。 稍后打开它们进行分析时,您可能仍需要担心空间,但是至少不必进行mdb- > R转换步骤。
最后,您真的需要R来读取该数据库吗? 如果不是这样,仅使用其他技术(python?)来读取数据库就可以节省很多麻烦。
最后,一个处理大量数据的通用建议:如果您还不了解data.tables
,则应该真正考虑学习如何使用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.