[英]Need a minimal example on how to wrap python code in r-package
來自數據科學,我可以按照 hadleys 的書編寫自己的(特定於項目的)R 庫,但很難掌握更高級的軟件開發術語。 我想合並以前數據科學家提供的 python 函數,而無需在 R 中重寫它們。因此,我正在尋找將 python 函數包裝到 R 包中的最小示例。
在構建 r 包時附加 python 腳本中, python 腳本在 R 函數的主體內使用,大概是為了解決 r 函數中的特定任務。 如果 python 腳本包含一組我希望在加載myRpackage
后可用的函數myRpackage
。
例如:給定腳本math.py
def square(x):
return x * x
def cube(x):
return x * x * x
創建一個包mathR
library(MathR)
square(2)
# 4
cube(2)
# 8
如何將 python 腳本中的函數作為 r 包中的獨立函數公開?
編輯:這是我的第一種方法。 pymath.R
math <- function(){
out <- reticulate::py_run_file(system.file("python/math.py", package = "mathR"))
return(out)
}
但是,這需要我初始化math()
以公開函數,而我希望在加載包后直接使用它們,如上所示。
library(mathR)
math_functions <- math()
math_functions$square(2)
# 4
您可以使用attach
。 或者,您可以將它們定義為調用網狀包裝函數的 R 函數。
但順便說一句,我自己不想這樣編碼,因為這些本身不是 R 函數,如果出現問題,將很難跟蹤和調試。
您可以向您的包添加 onLoad 調用以實現此目的。 只需讓包源加載這些功能,然后它就會像你提到的那樣工作
.onLoad <- function(libname, pkgname){
x <- rnorm(10) ## dummy example
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.