rpy2在脚本结束时产生无用的警告

2024-05-15 17:14:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我第一次使用py2r。所有功能都正常,除了在脚本末尾,我在stderr上看到以下输出:

R[write to console]: Warning message:

R[write to console]: In (function (package, help, pos = 2, lib.loc = NULL, character.only = FALSE,  :
R[write to console]: 
 
R[write to console]:  libraries ‘/usr/local/lib/R/site-library’, ‘/usr/lib/R/site-library’ contain no packages

这是一个MRE:

import pandas as pd
import rpy2.robjects as ro
from rpy2.robjects.packages import importr
import rpy2.robjects.numpy2ri
rpy2.robjects.numpy2ri.activate()

df_counts = pd.DataFrame([[15, 25, 40, 23, 17, 40,],
                          [11, 22, 33, 22, 11, 33,],
                          [26, 36, 62, 48, 15, 62,]],
                         index=["A", "B", "C"],
                         columns=["ca_w", "ca_wo", "ca_n", "co_w", "co_wo", "co_n"])

r_exact2x2 = importr("exact2x2")
def get_sig_stats_from_r(cluster):
    ca_w = cluster["ca_w"]
    ca_wo = cluster["ca_wo"]
    ca_n = cluster["ca_n"]
    co_w = cluster["co_w"]
    co_wo = cluster["co_wo"]
    co_n = cluster["co_n"]

    uncond_exact = r_exact2x2.uncondExact2x2(ca_w, ca_n, co_w, co_n)
    fisher_table = ro.r.matrix(ro.vectors.IntVector([ca_w, co_w, ca_wo, co_wo]), nrow=2)
    fisher_exact = r_exact2x2.fisher_exact(fisher_table)
    uncond_p = uncond_exact.rx2("p.value")[0]
    fisher_p = fisher_exact.rx2("p.value")[0]
    fisher_OR = fisher_exact.rx2("estimate")[0]
    fisher_CI = fisher_exact.rx2("conf.int")
    fisher_CI = list(fisher_CI)

    return [uncond_p, fisher_p, fisher_OR, fisher_CI]

df_sig = df_counts.apply(get_sig_stats_from_r, axis=1, result_type="expand")
print(df_sig)
df_sig.to_csv("foo.csv")

以及输出:

          0         1         2                 3
A  0.086901  0.116535  0.448134  [0.1755, 1.1045]
B  0.009209  0.013221  0.255747  [0.0891, 0.7303]
C  0.000051  0.000123  0.228655  [0.1015, 0.4998]
R[write to console]: Warning message:

R[write to console]: In (function (package, help, pos = 2, lib.loc = NULL, character.only = FALSE,  :
R[write to console]: 
 
R[write to console]:  libraries ‘/usr/local/lib/R/site-library’, ‘/usr/lib/R/site-library’ contain no packages

它似乎不像警告那样是一个适当的警告。simplefilter(“忽略”)不会停止消息。这在虚拟环境和系统(用户)python3中都会发生

这意味着什么?我怎样才能阻止它? 这是否表示可能导致另一个人系统出现实际错误

先谢谢你


Tags: todflibusrlibrarysiteexactconsole
1条回答
网友
1楼 · 发布于 2024-05-15 17:14:28

可以说,警告的用处在于旁观者的眼睛

这里发生的是,R发出了一个警告,据我所知,这与令人惊讶的空目录有关。在不知道更多的情况下,很难判断是否有问题需要担心,但我建议检查一下R是如何安装在那个系统上的

否则,可以通过自定义回调(请参阅doc-https://rpy2.github.io/doc/v3.3.x/html/callbacks.html#write-console)或通过默认回调使用的记录器(请参阅代码-https://github.com/rpy2/rpy2/blob/master/rpy2/rinterface_lib/callbacks.py#L119)来消除R的此类消息

相关问题 更多 >