如何 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
也会打印出来
在带网状结构的 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
也会打印出来