Как применить функцию python к списку r, используя сетку? - PullRequest
1 голос
/ 15 июня 2019

Неожиданный вывод при использовании функции Python в блоке R с сеткой

Python Chunk:

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

R Chunk:


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

Фактический:

[[1]] NULL

[[2]] NULL

Ожидаемое:

[[1]] [1] "1 Main Street"

[[2]] [1] "2 Hope Street"

1 Ответ

1 голос
/ 15 июня 2019

Это две части:

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 возвращает null в R. Это не кажется проблемой, если мы вызываем функцию напрямую, но в lapply возвращается нульперечислить и неявно печатается.Это будет напечатано, даже если вы используете stdout.flush в Python.

...