2017-10-17 72 views
-1

我想通過調用命令行的system2函數從R執行python代碼。通過系統命令從R運行python

下面是一個例子:

mcar = R6::R6Class(
    public = list(
    initialize = function() { 
     system2("python -c", "import gym; env = gym.make('MountainCar-v0')") 
    }, 
    reset = function() { 
     system2("python -c", "env.reset()") 
    } 
    getActionSpace = function() { 
     system2("python -c", "env.action_space") 
    } 
) 
) 

a = mcar$new() 
a$reset() 
a$getActionSpace() 

a = mcar$new()應該創建健身房環境,那麼它應該是可以調用a$reset()a$getActionSpace()。因爲我事先不知道resetgetActionSpace將以何種順序被調用,所以我不能只寫一個python腳本並調用它,例如

import gym 
env = gym.make('MountainCar-v0') 
env.reset() 
env.action_space 

system2("python -c", "import gym; env = gym.make('MountainCar-v0')")返回一個錯誤:

running command '"python -c" import gym; env = gym.make('MountainCar-v0')' had status 127

+1

你可以把它寫到文件,然後讀取或只是嘗試'蟒蛇-c「X = 1; X + 1」' –

+4

爲什麼你甚至想這樣做?如果您打算輸入多個命令,請啓動交互式會話。 –

+0

好吧,對不起,也許我應該增加更多細節,但我想盡量簡化問題...所以我從你的答案中得出這是不可能的?不,我不想使用文件,因爲我想通過調用系統命令從外部程序調用python命令,並且事先不知道調用的順序。我將編輯這篇文章,使其更清楚我想做什麼。 – needRhelp

回答

0

是否有一個原因,你不要把所有的命令在Python腳本,然後就調用命令行?

python example.py