通过 rpy2 将列表作为参数传递
passing list as argument though rpy2
我在 Python 中使用 R 的 spi 函数。其中一个参数 ("kernel") 需要一个列表,我不确定在使用 rpy2 时如何传递它。 R 语法如下(with "kernel" 参数):
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 脚本( 没有 使用 "kernel" 参数)如下:
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 的列表传递?
考虑从 python 字典创建 ListVector,然后将其传递给方法:
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])
我在 Python 中使用 R 的 spi 函数。其中一个参数 ("kernel") 需要一个列表,我不确定在使用 rpy2 时如何传递它。 R 语法如下(with "kernel" 参数):
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 脚本( 没有 使用 "kernel" 参数)如下:
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 的列表传递?
考虑从 python 字典创建 ListVector,然后将其传递给方法:
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])