繁体   English   中英

在R中读取.mdb文件时出现问题

[英]Issues reading .mdb files in R

我正在尝试阅读R中的一系列Microsoft Access数据库。我从使用mdb-toolsHmisc包中找到了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可以处理的内存限制。

这里有一些建议可以帮助您:

  1. 您可能可以使用rm释放一些无用的东西。 在加载文件之前,运行gc()触发垃圾回收器,因此可以确保所有可用内存都可用。 这可能足以解决您的问题。

  2. 如果还不够的话:一次依次导入mdb文件,然后将它们以另一种格式(例如默认的.RData )保存在硬盘中,并完全清除工作区。 稍后打开它们进行分析时,您可能仍需要担心空间,但是至少不必进行mdb- > R转换步骤。

  3. 最后,您真的需要R来读取该数据库吗? 如果不是这样,仅使用其他技术(python?)来读取数据库就可以节省很多麻烦。

最后,一个处理大量数据的通用建议:如果您还不了解data.tables ,则应该真正考虑学习如何使用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM