运行涉及Python代码包的R脚本

时间:2016-06-20 16:35:09

标签: python r packages

所以我正在研究一个简单的python代码来运行一个简单的R脚本。 R脚本只有大约6行,但使用“pracma”包。在python中使用subprocesses模块,它运行脚本,但具有典型的“库中的错误(pracma):没有名为'pracma'的包”。我只是在寻找一个简单的解决方案,能够运行安装了非基础软件包的R脚本。我知道你可以用rpy2以某种方式做到这一点,但我不能用pip来安装,我也在使用Anaconda3。

总而言之,我只是喜欢一个运行R脚本的简单包,其中安装了包。任何帮助将不胜感激。

这是我的Python代码的相关部分:

sp.run('Rscript Hausdorff.R', shell=True)

bFile = open("HausdorffData/hausdorff.txt", "r")
result = bFile.read()
bFile.close()
hausdorff_dist = float(result)

return hausdorff_dist

这是我的R脚本:

library(pracma)

setwd('HausdorffData')

PointsA <- as.matrix(read.table("HFileA.txt", header = FALSE))
PointsB <- as.matrix(read.table("HFileB.txt", header = FALSE))

H = hausdorff_dist(PointsA, PointsB)
write(H, file = "hausdorff.txt",ncolumns = 1, append = FALSE)

这会产生以下错误:

Error in library(pracma) : there is no package called 'pracma'
Execution halted

1 个答案:

答案 0 :(得分:0)

感谢@Dilettant:

即使R在没有这个的情况下似乎单独运行脚本,当从python这样的程序运行R脚本时,我们需要确保脚本知道我们的库所在的路径。这是通过将此行添加到开头来实现的。代码:

 .libPaths(dir\to\package)

如果代码中有任何其他涉及更改工作目录的行,则更改库路径不会影响这些行。