您可以通过以下方式缩小搜索范围,这将返回当前环境中 RODBC 类的所有变量。
envVariables<-ls()
bools<-sapply(envVariables, function(string){
class(get(string))=="RODBC"
})
rodbcObj<-envVariables[bools]
不过,关闭连接仍然属于 RODBC 类,因此这里仍然有一些工作要做。
我们可以使用 trycatch 定义一个函数,它将尝试获取关联的 RODBC 对象的连接信息。如果它是一个打开的连接,那么这个命令将正常运行,并且我们返回变量名称的字符串。
如果 RODBC 对象不是打开的连接,这将抛出一个错误,我们捕获该错误并按照我实现的方式返回 NA。您可以在这里退回任意数量的东西。
openConns<-function(string){
tryCatch({
result<-odbcGetInfo(get(string))
string
}, error = function(e){
NA
})
}
然后我们删除与错误对应的返回值。就我而言,NA,所以我在返回时执行 na.omit 。
na.omit(sapply(rodbcObj, openConns))
或者也可以
result<-sapply(rodbcObj, openConns)
result[!is.na(result)]
对此有任何疑问或意见请告诉我
-DMT