为什么将 pool::dbGetQuery 与 lapply 一起使用不起作用?
Why use of pool::dbGetQuery with lapply isn't working?
我正在尝试使用 R 的“池”包对一组数据库执行一组查询。
我有一个查询列表,queryList
(我确认每个元素都是一个字符向量,例如“SELECT...FROM...”)。
library(pool)
library(DBI)
# queryList defined earlier
myPool <- dbPool (...)
Results <- lapply(queryList, pool::dbGetQuery, myPool) # fails here!
我得到的错误是这样说的:“无法找到函数 'dbGetQuery' 的继承方法,用于签名“字符”、“池”。
一个 说这与 S4 不兼容有关。 pool::dbGetQuery
是一种 S4 方法。
有解决办法吗?
匿名函数的使用(例如,@neilfws 建议的 function(x)...
)有效。但是,我不确定为什么,因为在直接处理 dbiConnection 对象时不需要使用匿名函数。所以这有效
lapply(queryList, DBI::dbGetQuery, conn) # conn is dbiConnection
但这行不通
lapply(queryList, pool::dbGetQuery, pool) # pool is a pool of dbiConnections
可能是我误读了官方文档?
我正在尝试使用 R 的“池”包对一组数据库执行一组查询。
我有一个查询列表,queryList
(我确认每个元素都是一个字符向量,例如“SELECT...FROM...”)。
library(pool)
library(DBI)
# queryList defined earlier
myPool <- dbPool (...)
Results <- lapply(queryList, pool::dbGetQuery, myPool) # fails here!
我得到的错误是这样说的:“无法找到函数 'dbGetQuery' 的继承方法,用于签名“字符”、“池”。
一个 pool::dbGetQuery
是一种 S4 方法。
有解决办法吗?
匿名函数的使用(例如,@neilfws 建议的 function(x)...
)有效。但是,我不确定为什么,因为在直接处理 dbiConnection 对象时不需要使用匿名函数。所以这有效
lapply(queryList, DBI::dbGetQuery, conn) # conn is dbiConnection
但这行不通
lapply(queryList, pool::dbGetQuery, pool) # pool is a pool of dbiConnections
可能是我误读了官方文档?