UsageError: unrecognized arguments: in %R line
UsageError: unrecognized arguments: in %R line
自从我发现了 rpy2 并可以在我的 ipython 笔记本中使用 %R,我的编码变得容易多了。但是我可能碰壁了。
我需要从稳定的分布中产生价值。我正在使用 R 中的 stabledist 包。
我需要运行命令:
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 单元格时,我 运行 那里的命令:
%%R
Fx = pstable(.....
一切正常。
但我需要将此函数放在 python 脚本中。到目前为止,我已经使用了很多 R 包,并且 push/pull 数据运行良好,因此它在 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][1]
中报告的一些错误
有什么建议吗?
(我确实尝试在我的 python 代码中使用 %%R,但它没有改变任何东西)
[1]https://bitbucket.org/rpy2/rpy2/issue/253/r-select-flights-year-day
我找到了解决此问题的方法。但我想知道是否有合适的解决方案。
我创建了一个 R 单元格,一个 "workaround" 函数:
%%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)
成功了。
一种选择是使用经典方式:
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)
''')
您只需调用 rpy2
:
公开的 R 函数就可以实现更好的代码清晰度
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)
自从我发现了 rpy2 并可以在我的 ipython 笔记本中使用 %R,我的编码变得容易多了。但是我可能碰壁了。
我需要从稳定的分布中产生价值。我正在使用 R 中的 stabledist 包。
我需要运行命令:
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 单元格时,我 运行 那里的命令:
%%R
Fx = pstable(.....
一切正常。
但我需要将此函数放在 python 脚本中。到目前为止,我已经使用了很多 R 包,并且 push/pull 数据运行良好,因此它在 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][1]
中报告的一些错误有什么建议吗?
(我确实尝试在我的 python 代码中使用 %%R,但它没有改变任何东西)
[1]https://bitbucket.org/rpy2/rpy2/issue/253/r-select-flights-year-day
我找到了解决此问题的方法。但我想知道是否有合适的解决方案。
我创建了一个 R 单元格,一个 "workaround" 函数:
%%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)
成功了。
一种选择是使用经典方式:
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)
''')
您只需调用 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)