2013-02-11 54 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/