Фрагмент кода rpy2 возвращает пустой объект - PullRequest
0 голосов
/ 02 февраля 2020

Я использую rpy2 для использования библиотеки R в Python. В библиотеке есть функция prebas (), которая возвращает массив, в котором выводится элемент с индексом [8]. Когда я записываю эти выходные данные в CSV во фрагменте кода R, все работает как положено (выходные данные представляют собой CSV более 200 кБ). Однако когда я возвращаю тот же объект (PREBASout [8]), он возвращает пустой объект. Итак, очевидно, что когда я записываю этот объект в CSV, файл становится пустым.

run_prebasso = robjects.r('''
        weather <- read.csv("/home/example_inputs/weather.csv",header = T)
        PAR = c(weather$PAR,weather$PAR,weather$PAR)
        TAir = c(weather$TAir,weather$TAir,weather$TAir)
        Precip = c(weather$Precip,weather$Precip,weather$Precip)
        VPD = c(weather$VPD,weather$VPD,weather$VPD)
        CO2 = c(weather$CO2,weather$CO2,weather$CO2)
        DOY = c(weather$DOY,weather$DOY,weather$DOY)
        library(Rprebasso)

        PREBASout = prebas(nYears = 100, PAR=PAR,TAir=TAir,VPD=VPD,Precip=Precip,CO2=CO2)
        write.csv(PREBASout[8],"/home/outputs/written_in_r.csv",row.names = F)

        PREBASout[8]

''')

r_write_csv = robjects.r['write.csv']

r_write_csv(run_prebasso, "/home/outputs/written_in_py.csv")

Вот что возвращает фрагмент кода:

(Pdb) run_prebasso
<rpy2.rinterface.NULLType object at 0x7fc1b31e6b48> [RTYPES.NILSXP]

Вопрос : Почему written_in_py.csv и written_in_r.csv не одинаковы?

1 Ответ

0 голосов
/ 02 февраля 2020

Я только что нашел ошибку. Проблема была в строке

write.csv(PREBASout[8],"/home/outputs/written_in_r.csv",row.names = F)

Этот оператор был возвращен вместо того, что я хотел (PREBASout [8]). Когда я удалил его или присвоил переменной, все заработало как положено.

...