如何 lapply python 使用网状结构对 r 列表起作用?

How to lapply python function to r list using reticulate?

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

Python 块:

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

R 块:


address <- list("1 Main Street", "2 Hope Street")
lapply(address, py$print_address)

实际:

[[1]] 空

[[2]] 空

预计:

[[1]] [1]“主街 1 号”

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

这有两个部分:

1)python函数预计打印。但是 python 控制台的输出没有显示。这看起来像是一个典型的冲洗问题,它确实是。 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 函数没有 return 值。我不太确定这是如何工作的,但在这种情况下似乎 python returns a null to R。如果我们直接调用该函数,这似乎不是问题,但是在 lapply 中,returned null 被添加到列表中并隐式打印。即使您在 python.

中使用 stdout.flush 也会打印出来