在R中是否有用于对象关系映射的包?

nas*_*ddd 18 orm r rmysql dplyr

(通过对象关系映射,我的意思是这里描述的内容:维基百科:对象关系映射.)

以下是我在R中想象这项工作的方式:一种"虚拟数据框架"链接到数据库,并在访问时返回SQL查询的结果.例如,head(virtual_list)实际上会返回(select * from mapped_table limit 5)映射数据库的结果.

我在John Myles White找到了这篇文章,但在过去的3年中似乎没有任何进展.

是否有实现此功能的工作包?

如果不,

  1. 它会有用吗?
  2. 实施它的最佳方法是什么(S4?)?

nas*_*ddd 10

最近的一揽子计划dplyr实现了这个(以及其他惊人的功能).

以下是功能示例中的插图src_mysql():

# Connection basics ---------------------------------------------------------
# To connect to a database first create a src:
my_db <- src_mysql(host = "blah.com", user = "hadley",
  password = "pass")
# Then reference a tbl within that src
my_tbl <- tbl(my_db, "my_table")

# Methods -------------------------------------------------------------------
batting <- tbl(lahman_mysql(), "Batting")
dim(batting)
colnames(batting)
head(batting)
Run Code Online (Sandbox Code Playgroud)

  • 这不是 ORM 方法。这只是从数据库中提取一个表并将其转换为 data.frame/tbl。正确的 ORM 将数据库的条目(包括它们的关系)映射到编程语言中的对象/类。 (2认同)

G. *_*eck 7

有一个旧的不受支持的包SQLiteDF就是这样做的.从源代码构建它并忽略大量错误消息.

> # from example(sqlite.data.frame)
>
> library(SQLiteDF)
> iris.sdf <- sqlite.data.frame(iris)
> iris.sdf$Petal.Length[1:10] # $ done via SQL
 [1] 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5
Run Code Online (Sandbox Code Playgroud)