2013-02-11 71 views
1

sqldfRMySQL都是R包,允许访问MySQL数据库(前者使用后者)。它们都允许这样的语句:sqldf和rmysql的区别?

RMySQL: “运行任意SQL语句,并提取其所有输出(返回data.frame):”

dbGetQuery(con, "select count(*) from a_table") 
dbGetQuery(con, "select * from a_table") 

sqldf:

library(sqldf) 
sqldf("select * from iris limit 5") 
sqldf("select count(*) from iris") 
sqldf("select Species, count(*) from iris group by Species") 
# create a data frame 
DF <- data.frame(a = 1:5, b = letters[1:5]) 

所以有什么区别? sqldf提供哪些RMySQL不提供的功能?

+4

'sqldf'允许您针对数据框发出SQL语句。 – 2013-02-11 02:52:12

+0

含义,对来​​自任何地方(可能不是SQL数据库)的数据进行SQL分析? – 2013-02-11 02:53:14

+1

如果您有兴趣从R连接到MySQL数据库,请使用RMySQL(或RODBC)。 – joran 2013-02-11 02:57:38

回答

9

sqldf用于发出SQL语句,并使它们对数据框架起作用。 iris不是数据库表,而是一个内置数据集。

> head(iris, n=3) 
    Sepal.Length Sepal.Width Petal.Length Petal.Width Species 
1   5.1   3.5   1.4   0.2 setosa 
2   4.9   3.0   1.4   0.2 setosa 
3   4.7   3.2   1.3   0.2 setosa 

sqldf不用于连接数据库。

2

除了Lundberg观察到数据框是SQL命令的可接受目标之外,sqldf还可以针对SQLite(缺省情况下),H2,MySQL或postgresSQL中的任何(磁盘驻留)表: https://code.google.com/p/sqldf/