Как правильно получить R sessionInfo () из python с помощью системного вызова на windows? - PullRequest
0 голосов
/ 21 апреля 2020

Я хочу распечатать информацию о текущем сеансе R в сценарии python, используя subprocess.call(). Я новичок в использовании subprocess.call(), я просмотрел несколько SO post для доступа к сценарию R из python, поэтому я попытался таким же образом, но не смог распечатать текущий сеанс R информация правильно. Я использую windows, и я открываю блокнот Jupyter от termianl. Вот что я попробовал:

моя попытка :

Я просто хочу получить доступ к некоторой встроенной функции R (некоторым функциям baseR, таким как sessionInfo()) из python:

import subprocess

command = 'C:/Program Files/R/R-3.6.3/bin/Rscript'
arg = '--vanilla'
funcs = 'sessionInfo()'

retcode = subprocess.call([command, arg, funcs], shell=True)

но это не может правильно распечатать информацию о сеансе R, я получил 0 или 1. Я думаю, что мой способ вызова встроенной функции R из python не верен. Может кто-нибудь показать мне работоспособное решение, чтобы это произошло? что не так с моей попыткой? как я могу получить информацию о текущей сессии R () из python сценария? как я могу получить доступ к встроенным функциям R из python? есть мысли? спасибо

1 Ответ

2 голосов
/ 21 апреля 2020

Это работает для меня:

# Python 3.7.6 (default, Dec 30 2019, 19:38:28) 
# [Clang 11.0.0 (clang-1100.0.33.16)] on darwin

import subprocess

subprocess.call([
  'Rscript',
  '--vanilla',
  '-e',
  'sessionInfo()'
])
R version 3.6.0 (2019-04-26)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS Mojave 10.14.6

Matrix products: default
BLAS:   /Library/Frameworks/R.framework/Versions/3.6/Resources/lib/libRblas.0.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.6/Resources/lib/libRlapack.dylib

locale:
[1] C/UTF-8/C/C/C/C

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
[1] compiler_3.6.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...