gpt4 book ai didi

R 屏蔽冲突 : packages bnlearn and sna

转载 作者:行者123 更新时间:2023-12-05 05:16:31 28 4
gpt4 key购买 nike

我在并行使用 R 包 bnlearnsna 时遇到问题。以下示例很简单:

library(bnlearn)
data("asia")

# build network
a <- hc(asia)

# output
a

输出符合预期:

  Bayesian network learned via Score-based methods

model:
[A][S][T][L|S][B|S][E|T:L][X|E][D|B:E]
nodes: 8
arcs: 7
undirected arcs: 0
directed arcs: 7
average markov blanket size: 2.25
average neighbourhood size: 1.75
average branching factor: 0.88

learning algorithm: Hill-Climbing
score: BIC (disc.)
penalization coefficient: 4.258597
tests used in the learning procedure: 77
optimized: TRUE

一旦我加载了 sna 包,我收到了完全不同的东西:

library(sna)

#output
a

我得到:

Biased Net Model

Parameters:

Error in matrix(c(x$d, x$pi, x$sigma, x$rho), ncol = 1) :
'data' must be of a vector type, was 'NULL'

因为我实际上并没有调用任何函数(只是想获得 a 的输出),所以我认为使用 :: 运算符没有帮助.

我想知道问题是不是屏蔽了一个我无法真正影响的内部函数。任何帮助都会很棒!

最佳答案

这个和其他的有点类似q & a's除了在这种情况下有一个隐式调用 print ,而不是显式函数调用。是这个print被屏蔽的功能。

打印a , 您可以输入 a在终端中,或显式输入 print(a) .获得 bn 的 pretty-print 布局对象,作者写了一个print方法,这是在键入 a 时调度的内容或 print(a) . (要在没有此特定打印的情况下查看它,您可以使用 print.default(a) )。在注意到 class(a) == "bn" 之后, 你可以寻找 print方法,通过使用 methods("print")或输入 bnlearn:::print然后 <tab>查看可用函数:这会导致一个(未导出的)函数 bnlearn:::print.bn .

长话短说,sna包装还有一个 print.bn方法,用于 class 的对象"bn" (偏置网络),正是这个函数屏蔽了来自 bnlearn 的那个.

所以如果你加载snabnlearn 之后,您仍然可以通过显式使用 bnlearn:::print.bn(a) 来获得 pretty-print 效果,或重新定义 print方法 print.bn <- bnlearn:::print.bn , 它应该按预期打印。

关于R 屏蔽冲突 : packages bnlearn and sna,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50365865/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com