2014-08-27 2 views

답변

2

다음과 같은 방법으로 검색 범위를 좁힐 수 있습니다. 현재 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(sapply(rodbcObj, openConns)) 

또는 대안

result<-sapply(rodbcObj, openConns) 
result[!is.na(result)] 

질문이나 의견은 나를

-DMT

+0

큰 감사를 알려 :) 나는이 살펴 보겠습니다! – nathaneastwood

+1

RODBC "채널"의 연결 상태를 확인하려면 RODBC 내에서 널리 사용되기 때문에 안정적인 것으로 예상 할 수있는 개인 기능 'RODBC ::: odbcValidChannel' (3 개의 콜론 !!!)을 호출 할 수 있습니다. 왜 그런 중요한 기능이 RODBC에서 공개되었는지). 패키지'RODBCext'는 비슷한 기능을하지만 패키지 내에서 개인 기능을가집니다. –

관련 문제