Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 使用R的数据库的建议_Database_R - Fatal编程技术网

Database 使用R的数据库的建议

Database 使用R的数据库的建议,database,r,Database,R,我使用R来运行使用时间序列数据的模拟。我一直在使用数组来存储数据,但我需要一个内存密集度较低的解决方案,用于在中间步骤存储数据,以便记录过程。我不是一个程序员,所以如果可能的话,我想在多个平台(Windows、Mac、Linux)上安装一些相对容易的东西。我还需要能够直接从R调用数据库,因为现在学习另一种语言是不可行的。理想情况下,我希望能够以类似于数组的方式频繁地读写数据库,尽管我不知道这是否现实。我很乐意牺牲速度来提高易用性,但我愿意努力学习开源解决方案。如有任何建议,将不胜感激 我还需要能

我使用R来运行使用时间序列数据的模拟。我一直在使用数组来存储数据,但我需要一个内存密集度较低的解决方案,用于在中间步骤存储数据,以便记录过程。我不是一个程序员,所以如果可能的话,我想在多个平台(Windows、Mac、Linux)上安装一些相对容易的东西。我还需要能够直接从R调用数据库,因为现在学习另一种语言是不可行的。理想情况下,我希望能够以类似于数组的方式频繁地读写数据库,尽管我不知道这是否现实。我很乐意牺牲速度来提高易用性,但我愿意努力学习开源解决方案。如有任何建议,将不胜感激

我还需要能够直接 从R调用数据库

我建议使用RMySQL接口设置MySQL

DB连接打开后,您可以查询数据库并将数据输入R,例如:

# Run an SQL statement by creating first a resultSet object
rs <- dbSendQuery(con, statement = paste(
                      "SELECT w.laser_id, w.wavelength, p.cut_off",
                      "FROM WL w, PURGE P",
                      "WHERE w.laser_id = p.laser_id",
                      "SORT BY w.laser_id")
# we now fetch records from the resultSet into a data.frame
data <- fetch(rs, n = -1)   # extract all rows
#通过首先创建resultSet对象来运行SQL语句
快速评论:

  • R擅长于此,作为一种数据编程语言,有很多接口
  • 有一个完整的数据库专门用于数据导入/导出,它有一个,所以从这里开始
  • R有广泛使用的软件包,它为许多后端提供了统一的接口,其中包括SQLite、MySQL、PostgreSQL、Oracle。。。用它,也许可以让事情快速进行。之后您仍然可以切换后端
  • 还有一个问题,但我觉得使用ODBC很乏味
  • R在Paul Gilbert的包中还有一个专门的变体,它将类似DBI的抽象引入timeseries数据库。它还支持多个后端
  • 这个包就是为此而写的,它在索引和聚合方面非常快

您真的需要一个数据库解决方案来满足您的需求吗?您说您想要一个“在中间步骤存储数据的解决方案”——简单地在所需的时间点将数据数组保存到磁盘上如何


编辑:为了能够检索信息,您可以在文件名中嵌入元信息,例如试用索引和/或时间戳。然后,您可以使用正确的文件名找到并加载该文件。

您还可以查看该软件包。

对于单个用户,RSQLite更易于安装且速度相当快。感谢您提供的代码示例Bakkal。这将用于单个用户。对于这个应用程序,使用MySQL而不是SQLite有什么好处吗?对于当前的任务,您可以使用最简单的DB,如果缺少一个有用的特性,可以稍后再使用更完整的DB:)对于RSQLite,它的代码是相同的——请参阅我关于两个包使用的DBI接口的答案。n使用MySQL。我每天使用R和MySQL进行模拟工作。一开始可能需要做很多工作,但从长远来看,学习曲线是完全值得的,因为数据的大小和复杂性必然会随着时间的推移而增长。我对R比较陌生,但这似乎会生成数百个文件,并且在我完成后很难进行审核。每次运行模拟都需要创建几个三维阵列,我一次只能运行大约5000个模拟。我目前的目标是跑50000次。如果有更好的方法将三维阵列存储到磁盘,并在以后以系统的方式读取其结果,我当然会感谢您的指导。感谢您提供的资源。到目前为止,SQLite看起来最适合我的技能水平。嗯,看起来DBI死于2009年。有什么更新的吗?@SteveBennett:没有,它还活着,而且是最新的,但自2009年以来,没有进行过与之不同的错误修复。正如我所写的,DBI只是一个接口。版本为0.2-5。如果一个bug被发现,有人会突然修复它,这似乎是极不可能的。(对我来说,这是一个很好的理由,不必在这条路上投入时间和精力。)你不知道自己在说什么。DBI坚如磐石,已经问世十多年了——RSQLite、RMySQL、RPostgreSQL、ROracle每天都在使用它。