Используйте repl_python () внутри цикла - PullRequest
1 голос
/ 06 июня 2019

Я пытаюсь запустить сравнительный тест, который требует нескольких итераций результатов из сценария Python и сценария R.Используя repl_python () из пакета reticulate, все работает за одну итерацию;однако, если я попытаюсь запустить его внутри цикла, чтобы получить репликации, он не сработает.

Идеи о том, как заставить блок кода Python работать внутри цикла в R?

      ###################################################
      x <- 0
      #run this line by line 5 times, end up with x = 5
      repl_python()
      a = r.x
      a = a + 1
      exit
      x <- py$a

     #####################################
     #try to run this, and it just freezes
     #i stays at 1 and x stays at 0 
     x <- 0
     for (i in  1:5){
     repl_python()
     a = r.x
     a = a + 1
     exit
     x <- py$a
     }

1 Ответ

0 голосов
/ 08 июня 2019

Я решил это сам; неудивительно, что чтение мелкого шрифта на сетчатой ​​упаковке было ключевым. Проблема была в том, что repl_python () работает только в консоли. Чтобы запустить строки кода Python в скрипте, используйте py_run_string () следующим образом:

 x <- 0
 for (i in  1:5){
  py_run_string("a = r.x")
  py_run_string("a = a + 1")
  x <- py$a
 }
 x

Надеюсь, это поможет кому-то еще не тратить время, как я.

...