基本问题是这样的:假设我正在编写通过调用 python 的 R 函数rPython
,并且我想将它集成到一个包中。这很简单——R 函数围绕 Python 是无关紧要的,你照常进行。例如
# trivial example
# library(rPython)
add <- function(x, y) {
python.assign("x", x)
python.assign("y", y)
python.exec("result = x+y")
result <- python.get("result")
return(result)
}
但是如果带有 R 函数的 Python 代码需要用户先导入 Python 库怎么办?例如
# python code, not R
import numpy as np
print(np.sin(np.deg2rad(90)))
# R function that call Python via rPython
# *this function will not run without first executing `import numpy as np`
print_sin <- function(degree){
python.assign("degree", degree)
python.exec('result = np.sin(np.deg2rad(degree))')
result <- python.get('result')
return(result)
}
如果你在没有导入库的情况下运行它numpy
,你会得到一个错误。
如何在 R 包中导入 Python 库?你如何评论它roxygen2
?
看来R标准是这样的:
# R function that call Python via rPython
# *this function will not run without first executing `import numpy as np`
print_sin <- function(degree){
python.assign("degree", degree)
python.exec('import numpy as np')
python.exec('result = np.sin(np.deg2rad(degree))')
result <- python.get('result')
return(result)
}
每次运行 R 函数时,都会导入整个 Python 库。