UsageError:无法识别的参数:in%R行

由于我发现rpy2和在我的ipython笔记本中使用%R的可能性,我的编码变得更容易了。但我可能撞墙了。UsageError:无法识别的参数:in%R行

我需要从一个稳定的分布产生价值。我使用stabledist包从R.

我需要运行命令:当我定义我为A R细胞的细胞之一

 Fx = pstable(seq(-2,4,0.1), alpha =alfa_x, beta = -1, gamma = scale_x, delta = delta_x, pm = 1, lower.tail = TRUE, log.p = FALSE, subdivisions = 1000) 

,我运行命令有:

 %%R 

Fx = pstable(.....

一切正常。

但我需要把这个函数放在一个python脚本中。到目前为止,我已经使用了很多R包,并且数据的推送/拉取工作非常完美,所以它在Python脚本中使用了R代码行(使用%R rmagic)。

但是这一个

,如果我叫Python脚本中相同的封装和功能,以下列方式:

 python code... 

%Rpush alfa_x

%Rpush scale_x

%Rpush delta_x

%R Fx = pstable(seq(-2,4,0.1), alpha =alfa_x, beta = -1, gamma = scale_x, delta = delta_x, pm = 1, lower.tail = TRUE, log.p = FALSE, subdivisions = 1000)

我得到的用法错误:

 UsageError: unrecognized arguments:..... 

我基本上得到一些错误报告在这个老[线程] [1]

任何建议?

(我曾尝试我的Python代码中使用%% R,但它不会改变任何东西)

[1] https://bitbucket.org/rpy2/rpy2/issue/253/r-select-flights-year-day

回答:

一种选择是使用经典的方式:

import rpy2.robjects as robjects 

FX= robjects.r('''

pstable(seq(-2,4,0.1),

alpha =alfa_x,

beta = -1,

gamma = scale_x,

delta = delta_x,

pm = 1, lower.tail = TRUE,

log.p = FALSE, subdivisions = 1000)

''')

回答:

我发现了一个解决方法,这一问题。但我想知道是否有适当的解决方案。

我创建的R细胞, “解决办法” 功能:

%%R 

library(stabledist)

workaround_pstable <- function(x,alfa_x,scale_x,delta_x)

{F = pstable(x, alpha =alfa_x, beta = -1, gamma = scale_x, delta = delta_x, pm = 1, lower.tail = TRUE, log.p = FALSE, subdivisions = 1000)

return(F)}

,然后在IPython的电池我的Python代码中,我所说的解决办法功能

python code... 

%Rpush alfa_x

%Rpush scale_x

%Rpush delta_x

%R Fx = workaround_pstable(Id_unique,alfa_x,scale_x, delta_x)

它的工作。

回答:

你可能会只调用R函数由rpy2外露达到更好的代码清晰:

from rpy2 import robjects 

# get whatever is called "pstable", just like when writing

# "pstable" in the R console

pstable = robjects.globalenv.get('pstable')

# same for seq... but since I know that it is coming from base, I

# get it from there

seq = robjects.baseenv['seq']

Fx = pstable(seq(-2,4,0.1),

alpha = alfa_x,

beta = -1,

gamma = scale_x,

delta = delta_x,

pm = 1,

lower_tail = True,

log_p = False,

subdivisions = 1000)

以上是 UsageError:无法识别的参数:in%R行 的全部内容, 来源链接: utcz.com/qa/267223.html

回到顶部