我正在尝试运行比较测试,该测试需要从python脚本和R脚本进行多次结果迭代。使用reticulate包中的repl_python(),一切都可以进行一次迭代。但是,如果我尝试在循环中运行它以获取复制品,那么它将无法正常工作。
关于如何获取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
}
答案 0 :(得分:0)
我自己解决了;毫不奇怪,读取网状包装的精美印刷是关键。问题是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
希望这可以帮助其他人不会像我那样浪费时间。
答案 1 :(得分:0)
我找到了解决这个问题的方法
编写python代码并保存为.py文件
此后,使用命令source_python('path_to_code.py')
运行python代码
像这样:
#### Python part #####
a = r.x
a = a + 1
#### R part #####
for (x in 1:10) {
source_python('python_part.py')
print(a)
}