簡體   English   中英

如何使用網狀將python函數復制到r列表?

[英]How to lapply python function to r list using reticulate?

在帶有網狀的 R 塊中使用 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函數不返回值。 我不太確定這是如何工作的,但在這種情況下,python 似乎向 R 返回一個null 。如果我們直接調用該函數,這似乎不是問題,但在lapply ,返回的 null 被添加到列表中並隱式被打印出來。 即使您在 python 中使用stdout.flush這也會被打印出來。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM