sqldf和RMySQL都是允许访问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没有?
答案 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/