2012-11-02 5 views
1

경고를 억제하고 싶습니다. 그러나 다음 코드는 경고를 표시하지 않습니다.rpy2에 embed r 코드가있는 함수를 생성하십시오.

import rpy2.robjects as robjects 

kstest=robjects.r['ks.test'] 

suppressWarnings=robjects.r['suppressWarnings'] 

x=robjects.IntVector([1, 2, 3]) 
y=robjects.IntVector([1, 2, 4, 5]) 

result=suppressWarnings(kstest(x, y)) 
print result 
print result[1][0] 

rpy2와 같은 함수를 만들고 대신 함수를 호출 할 수 있다면 경고를 표시하지 않을 수 있다고 생각합니다.

f=function(x, y) { 
    suppressWarnings(kstest(x, y)) 
} 

그러나 rpy2 문서에는 예제가 없습니다. 아무도 모범을 보이고 있습니까?

답변

0

rpy2 suppressWarnings(kstest(x, y))에서 수행 할 때 kstest(x, y) 호출이 먼저 평가되고 경고가 생성되는 경우 반환되는 결과는 suppressWarnings()으로 전달됩니다.

R의 suppressWarning() 경고가 호출로 생성 된 경고음을 인수로 전달한다는 것입니다. 이는 R에서 매개 변수가 함수 본문에 필요할 때만 평가되기 때문에 가능합니다. 파이썬과의 주목할만한 차이.

rpy2를 모방하는 방법은 평가되지 않은 호출을 구성하여 suppressWarning()으로 전달하거나 호출을 R로 푸시하고 호출을 래핑 할 R 함수를 만드는 것이 좋습니다. 설명서에는 기능이있는 예제가 포함 된 evaluate a string as R code 방법이 나와 있습니다.