sqldf和rmysql之间的区别?

时间:2013-02-11 02:49:44

标签: r rmysql sqldf

sqldfRMySQL都是允许访问MySQL数据库的R包(前者使用后者)。他们都允许这样的陈述:

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没有?

2 个答案:

答案 0 :(得分: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不用于连接数据库。

答案 1 :(得分:2)

除了Lundberg观察到数据帧是SQL命令的可接受目标之外,还有一点sqldf可以反对SQLite中的任何(磁盘驻留)表(默认),H2,MySQL,或者postgresSQL:https://code.google.com/p/sqldf/