如何使用网状线将python函数应用于r列表?

时间:2019-06-15 14:24:00

标签: r reticulate

在带有网状结构的R块中使用Python函数时出现意外输出

Python块:

await

R块:

def print_address(address):
    py_address = r.address
    print(py_address)

实际:

[[1]] NULL

[[2]] NULL

预期:

[[1]] [1]“大街1号”

[[2]] [1]“希望街2号”

1 个答案:

答案 0 :(得分:1)

这有两部分:

1)预计将打印python函数。但是不会显示python console的输出。这看起来像是一个典型的冲洗问题。 https://github.com/rstudio/rstudio/issues/3271 因此,如果我们在Python中刷新标准输出,则会打印地址。

import sys
def print_address(address):
    py_address = address
    print(py_address)
    sys.stdout.flush()

2)我们的python函数不返回value。我不太确定这是如何工作的,但是在这种情况下,python似乎向R返回了null。如果我们直接调用函数,而在lapply中,这似乎不是问题。返回的null被添加到列表中并隐式地被打印。即使您在python中使用stdout.flush,也会打印此内容。