我对rpy2以及R都很新.
我基本上有一个R脚本script.R,它包含rfunc(文件夹)等功能.它与我的python脚本位于同一目录中.我想从Python调用它,然后启动它的一个功能.我不需要这个R函数的任何输出.我知道它必须非常基础,但我找不到R脚本调用python代码的例子.我目前正在做什么,在Python中:
import rpy2.robjects as robjects
def pyFunction(folder):
#do python stuff
r=robjects.r
r[r.source("script.R")]
r["rfunc(folder)"]
#do python stuff
pyFunction(folder)
Run Code Online (Sandbox Code Playgroud)
我在源代码上遇到错误:
r[r.source("script.R")]
File "/usr/lib/python2.7/dist-packages/rpy2/robjects/__init__.py", line 226, in __getitem__
res = _globalenv.get(item)
TypeError: argument 1 must be string, not ListVector
我完全不明白我给它的参数是不是一个字符串,我想同样的问题将在下一行发生,文件夹是一个python字符串,而不是一个R thingie.
那么,我怎样才能正确调用我的脚本?
我正在尝试编写一个代码来确定井字游戏的获胜者。(这是一个大学作业)
为此,我编写了以下函数:
这段代码只检查水平线,我没有添加其余的。我觉得这是需要一些硬编码的东西。
def iswinner(board, decorator):
win = True
for row in range(len(board)):
for col in range(len(board)):
if board[row][col] == decorator:
win = True
else:
win = False
break
Run Code Online (Sandbox Code Playgroud)
其中“board”是大小为 n^2 的二维数组,“decorator”是“X”或“O”值
我希望完成的是该函数循环遍历二维数组的行。然后循环遍历每一行中的值。如果该元素与“装饰器”匹配,则它继续并检查下一个,但如果不匹配,则它从第一个循环中断并转到下一行。它会这样做,直到在同一行中找到 n 个元素。然后它会给出一个布尔值 True 否则为 False。
代码似乎没有这样做,即使我检查了以下“板”,它也给了我“真”的输出
Run Code Online (Sandbox Code Playgroud)check_list = [['O', 'X', 'X'], ['O', 'X', 'O'], ['O', 'X', 'X']]
非常感谢!
最好的,赛义德