передача списка в качестве аргумента через rpy2

Я использую функцию R spi в Python. Один из аргументов («ядро») требует списка, и я не уверен, как передать его при использовании rpy2. Синтаксис R будет следующим (с аргументом «ядро»):

library("lmomco", lib.loc="~/lib/R_libs")
library("SPEI", lib.loc="~/lib/R_libs")

data = read.csv("rainfall_data.csv", header = FALSE)
result = spi(data, scale=10, distribution='Gamma', fit='max-lik', kernel = list(type='rectangular', shift=0))

Мой сценарий Python на данный момент (без использования аргумента «ядро») выглядит следующим образом:

import numpy as np 
from rpy2.robjects.packages import importr
importr('lmomco')
SPEI = importr('SPEI')

import rpy2.robjects.numpy2ri as numpy2ri
numpy2ri.activate()

data = np.genfromtxt('rainfall_data.csv', delimiter=',')

result = np.array(SPEI.spi(data, scale=10, distribution='Gamma', fit='max-lik')[1])

Как передать ядро ​​в виде списка для rpy2?


person Oliver Angelil    schedule 07.05.2017    source источник


Ответы (1)


Попробуйте создать ListVector из словаря Python, а затем передать его в метод:

import rpy2.robjects as robjects 
...
x = robjects.ListVector({'type': 'rectangular', 'shift': 0})

result = np.array(SPEI.spi(data, scale=10, distribution='Gamma', fit='max-lik', kernel=x)[1])
person Parfait    schedule 07.05.2017