【发布时间】:2020-09-15 15:53:22
【问题描述】:
我在这个 stackoverflow 中的第一篇文章! :)
我正在尝试使用 Python 导入表(R 脚本的输出)。 这对于避免翻译在 R 中设计复杂 data.table 的巨大脚本非常有帮助。
现在我知道如何使用以下代码使用 Python 调用 R 脚本:
import os
import subprocess
#Launch selected script
command = 'C:/Program Files/R/R-3.4.0/bin/x64/Rscript.exe'
path2script = 'C:/mypath/myscript.R'
cmd = [command, path2script]
a = subprocess.call(cmd)
但是我不知道如何使用表格,R 代码的输出,使用我的 Python 脚本。你有什么想法吗?
非常感谢
编辑:
我尝试了下面@punter 的解决方案
import subprocess
with subprocess.Popen(['/command/to/run', '/other/parameters'], stdout=subprocess.PIPE) as proc:
table = proc.stdout.read()
然后表格作为一个奇怪的格式是这样的:(它是一个子集)
A\r\n COL1 COL2 COL3\r\n 1: 2015-06-17 05:19 NA <NA>\r\n 2: 2015-06-17 05:19 NA <NA>\r\n 3: 2015-06-17 05:19 NA <NA>\r\n 4: 2015-06-17 05:19 NA <NA>\r\n 5: 2015-06-17 05:19:29 NA <NA>\r\n
当我尝试下面的代码时,我得到了列名中的所有内容
s=str(table)
data = StringIO(s)
df=pd.read_csv(data)
[0 行 x 111 列]
编辑 2 号
在 str(table, "ISO-8859-1") 之类的 str 中尝试使用这个“ISO-8859-1”似乎可以正常工作,我注意到我的脚本中有多个表。 我正在以一种干净的方式重新运行所有内容,我希望它会起作用! :)
【问题讨论】:
-
能否将 R 脚本的输出保存到文件中,以便稍后在 Python 代码中打开?
-
您好,感谢您的回答。我确实可以,但我的桌子很大(数百万行),所以我想看看在此之前是否还有其他选择。
-
您有什么快速的方法可以在 R 中生成大表吗?我是 R 新手,找不到任何要打印的大表来测试解决方案。如果您能回答上述问题,那就太好了。同时查看我的解决方案。该解决方案可能无法按大表的要求工作。
-
您好@punter147,非常感谢。您可以使用此代码生成大表:test
-
感谢您提供的脚本,我正在尝试使用我的 R 代码(运行它大约需要 30 分钟)
标签: python r python-requests subprocess method-call