【问题标题】:Running an R script that involves Packages from Python Code运行涉及 Python 代码中的包的 R 脚本
【发布时间】:2016-10-22 00:11:52
【问题描述】:

所以我目前正在编写一个简单的 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

【问题讨论】:

  • 在这里请求包、库或插件并不合适。答案和 cmets 往往是基于意见的(主要)。如果您提供一些代码,我们可能会帮助您提供有效的附加行或更正您尝试过的代码。请尝试向我们展示您的尝试。谢谢。
  • 我编辑添加了一些我所指的相关代码。谢谢@Dilettant
  • 看起来 Rscript 出现在错误的地方?你试过.libPaths()之类的吗?
  • 天哪,谢谢您!我在 .libPaths() 中添加了它似乎有效。谢谢!!
  • 不客气。请添加为问题的更新,或从中创建答案并接受它,因此“找到”此页面的人们知道当他们像您一样被卡住时该怎么办。 ;-) 快乐的黑客!

标签: python r packages


【解决方案1】:

感谢@Dilettant:

即使 R 看似可以单独运行脚本,但在从 python 之类的东西运行 R 脚本时,我们需要确保脚本知道我们的库所在的路径。这可以通过在开头添加这一行来实现代码:

 .libPaths(dir\to\package)

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

【讨论】:

  • 这是一个特殊的用例。从其他程序调用 R 脚本时不需要指定.libPaths()。我已经从 Python 运行了许多 R 脚本。你如何调用 R 脚本? sp.run() 是什么,不是来自子流程模块。
  • sp.run() 在子流程模块中。它是在 python 3.5 中添加的。也许它确实是一个特例,但无论我用 sp.call() 还是 sp.run() 调用它,我都会得到同样的错误。这可能就是为什么我在四处寻找解决方案后却很难找到解决方案的原因。
猜你喜欢
  • 2011-01-03
  • 2019-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-02
  • 1970-01-01
  • 2015-12-12
  • 1970-01-01
相关资源
最近更新 更多