2017-10-17 5 views
-1

Je souhaite exécuter le code python à partir de R via la fonction system2, qui appelle une ligne de commande.Exécuter python à partir de R via la commande système

Voici un exemple:

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() devrait créer l'environnement de gym et il devrait être possible d'appeler a$reset() ou a$getActionSpace(). Parce que je ne sais pas à l'avance dans quel ordre reset et getActionSpace seront appelés, je ne peux pas simplement écrire un script Python et appeler cela, par exemple.

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

Mais system2("python -c", "import gym; env = gym.make('MountainCar-v0')") renvoie une erreur:

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

+1

Vous pouvez l'écrire dans un fichier, puis lire ou simplement essayer 'python -c « x = 1; x + 1 »' –

+4

Pourquoi voudriez-vous faire cela? Si vous prévoyez d'entrer plusieurs commandes, démarrez une session interactive. –

+0

Ok désolé, peut-être que j'aurais dû ajouter plus de détails, mais je voulais garder la question aussi simple que possible ... Donc, je prends de vos réponses que ce n'est pas possible? Non, je ne veux pas utiliser un fichier car je veux appeler des commandes python à partir d'un programme externe en invoquant une commande système et je ne connais pas à l'avance l'ordre des appels. Je vais modifier le post pour le rendre plus clair ce que je veux faire. – needRhelp

Répondre

0

Y at-il une raison que vous ne mettez pas toutes les commandes dans un script python et puis juste appeler à partir de la ligne de commande?

python example.py