我想抑制警告。但是以下代码不会禁止警告。
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 :(得分:0)
在rpy2 suppressWarnings(kstest(x, y))
中进行操作时,首先评估调用kstest(x, y)
(并生成警告),然后将返回的结果传递给suppressWarnings()
。
正在发生的事情是R suppressWarning()
将通过调用生成的警告作为参数传递。这是可能的,因为在R中,仅在函数体中需要时才评估参数;与Python有显着差异。
使用rpy2模仿的方法是构建一个未评估的调用并将其传递给suppressWarning()
,或者当你建议将调用推送到R并创建一个将包装调用的R函数。该文档显示了evaluate a string as R code的方法,以及一个带函数的示例。