关于在函数内部使用dplyr的问题,我现在有各种各样的答案,但是我尝试了所有方法,但都没有效果。
这是我的简单功能:
loadData_gfi_zse <- function(table_name = "mytable_name"){
con <- DBI::dbConnect(RMySQL::MySQL(),
host = "xxxx",
user = "xxxx",
password = "xxxx",
dbname = "xxxxs")
table_name <- substitute(table_name)
df <- tbl(con, lazyeval::interp(table_name))
dbDisconnect(con)
df_clean
}
我尝试了机智rlang::!!
和其他方法,但均无济于事。这应该很简单,但是我无法正常工作。
答案 0 :(得分:1)
library(dplyr)
con <- DBI::dbConnect(RSQLite::SQLite(), dbname = "dummydb.sqlite")
DBI::dbWriteTable(con, "iris", head(iris))
DBI::dbDisconnect(con)
loadData_gfi_zse <- function(table_name = "mytable_name") {
con <- DBI::dbConnect(RSQLite::SQLite(), dbname = "dummydb.sqlite")
on.exit(DBI::dbDisconnect(con))
collect(tbl(con, table_name))
}
loadData_gfi_zse(table_name = "iris")
# # A tibble: 6 x 5
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# <dbl> <dbl> <dbl> <dbl> <chr>
# 1 5.1 3.5 1.4 0.2 setosa
# 2 4.9 3 1.4 0.2 setosa
# 3 4.7 3.2 1.3 0.2 setosa
# 4 4.6 3.1 1.5 0.2 setosa
# 5 5 3.6 1.4 0.2 setosa
# 6 5.4 3.9 1.7 0.4 setosa
unlink("dummydb.sqlite")