I got a "generator object" from a python function. However, I tried many ways but failed to read the "generator object" in r using reticulate
. I know python base function list()
can convert "generator object" to "json", which I can then read in r. I wonder how to use base python function in r? (I would not prefer to use py_run_file
)
For example:
>library(reticulate)
>foo <- import("foo")
>res <- foo.func()
<generator object at 0x7fd4fe98ee40>
You could use iterate
or iter_next
.
As an example, consider a python generator firstn.py
:
def firstn(n):
num = 0
while num < n:
yield num
num += 1
You can traverse the generator either with iterate
:
library(reticulate)
source_python('firstn.py')
gen <- firstn(10)
gen
#<generator object firstn at 0x0000020CE536AF10>
result <- iterate(gen)
result
# [1] 0 1 2 3 4 5 6 7 8 9
or with iter_next
:
iter_next(gen)
[1] 0
iter_next(gen)
[1] 1
iter_next(gen)
[1] 2