sqldf和RMySQL都是R包,允许访问MySQL数据库(前者使用后者).它们都允许这样的语句:
RMySQL:"运行任意SQL语句并提取其所有输出(返回data.frame):"
dbGetQuery(con, "select count(*) from a_table")
dbGetQuery(con, "select * from a_table")
Run Code Online (Sandbox Code Playgroud)
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])
Run Code Online (Sandbox Code Playgroud)
那有什么区别?sqldf提供的RMySQL没有提供什么?
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
Run Code Online (Sandbox Code Playgroud)
sqldf 不用于连接数据库.