R-将patsy.dmatrices()与网状结构一起使用
我在尝试将函数R-将patsy.dmatrices()与网状结构一起使用,r,patsy,reticulate,R,Patsy,Reticulate,我在尝试将函数patsy.dmatrices()与networkiteR包一起使用时遇到了名称空间问题 以下是一个简单的可复制示例: patsy <- import("patsy") # Data dataset <- data.frame(Y=rnorm(1000,2.5,1)) # Null model formula_null <- "I(Y-1) ~ 1" dmat = patsy$dmatrices(formula_null, data=dataset, NA_act
patsy.dmatrices()
与networkite
R包一起使用时遇到了名称空间问题
以下是一个简单的可复制示例:
patsy <- import("patsy")
# Data
dataset <- data.frame(Y=rnorm(1000,2.5,1))
# Null model
formula_null <- "I(Y-1) ~ 1"
dmat = patsy$dmatrices(formula_null, data=dataset, NA_action="drop",
return_type="dataframe")
我认为这与名称空间(cf)有关,可以通过使用functiondmatrices()
的eval_env
参数来修复名称空间,但我不知道如何修复
当我们想在R中使用Pythonstatsmodels
包时,这是一个很大的问题,该包使用了公式的patsy
包
谢谢你的帮助,我不确定,但我认为你对名称空间的猜测是正确的,这是patsy和Networkite之间的不幸互动。默认情况下,patsy尝试查看调用者的作用域,以计算公式中任何无法识别的函数/变量(就像R公式函数一样)。这需要使用Python的堆栈内省来查看调用方的作用域。但是,由于调用者使用的是完全不同的语言,这几乎肯定不会起作用 使用
eval_env
参数到dmatrices
可以覆盖patsy读取调用方名称空间的正常行为。(.)试试这个:
dmat = patsy$dmatrices(formula_null, data=dataset, NA_action="drop",
return_type="dataframe",
# New:
eval_env=patsy$EvalEnvironment(c())
)
我们的想法是在这里创建一个空的EvalEnvironment
对象,并告诉patsy使用它,而不是试图读取调用方的环境
我不熟悉Networkite,因此您可能需要调整以上内容才能正常工作–在Python中,等效内容是:
dmat = patsy.dmatrices(formula_null, data=dataset, NA_action="drop",
return_type="dataframe",
eval_env=patsy.EvalEnvironment([])
特别是,如果netracite没有将
c()
转换为空列表,那么您将需要找到可以转换的内容。(也许可以试试patsy$EvalEnvironment(list())
?)谢谢,这完全是一个救命稻草!
dmat = patsy.dmatrices(formula_null, data=dataset, NA_action="drop",
return_type="dataframe",
eval_env=patsy.EvalEnvironment([])