1

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 不提供的什么?

4

2 回答 2

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不用于连接数据库。

于 2013-02-11T02:56:42.313 回答
2

Besides the observation by Lundberg that dataframes are acceptable targets for SQL-commands, there is also the point that sqldf can go against any (disk-resident) table in SQLite (the default), H2, MySQL, or postgresSQL: https://code.google.com/p/sqldf/

于 2013-02-11T04:11:10.353 回答