Я управляю R через Python пакетом rpy2. Все работает нормально, за исключением случаев, когда мне нужно ввести некоторые аргументы функции через Rlist . Списки определяются тем же ключевым словом, что и Python: list
; но по содержанию он совсем другой. Поскольку Python считает, что я создаю список Python вместо Rlist, всегда отображается ошибка. Я использую rpy2 для управления пакетом WaveleComp R.
Здесь я показываю пример, в котором я пытаюсь запрограммировать legend_params
:
import pandas as pd
# Import R manage tools:
import rpy2.robjects.packages as rpackages
from rpy2.robjects.vectors import StrVector, Matrix
from rpy2.robjects.packages import importr
import rpy2.robjects as ro
R = ro.r
from rpy2.robjects import pandas2ri
pandas2ri.activate()
grdevices = importr('grDevices')
data = pd.read_excel('Data.xlsx') # Load data
wvt = importr('WaveletComp') # Import WaveletComp R package
# Continuous Wavelet Transform of the data:
cwt = wvt.analyze_wavelet(data ,'Valores',loess_span = 0.75, dt=1,dj=1/20,
lowerPeriod = 2, upperPeriod = 30, make_pval = True, n_sim = 100)
# Create image saver
grdevices.png(filename="Subsidencia_Wavelets.png", width = 14, height = 6,
units = 'in', res = 1000, pointsize = 12)
# Save image (here is where error is generated)
wvt.wt_image(cwt, color_key = "quantile", main = (trayectoria + ' - ' + agregado),
n_levels = 250, show_date = True, periodlab = "period (months)",
legend_params = list(lab = "wavelet power levels", mar = 4.7))
# Close Graphical Device
grdevices.graphics_off()
Out[]:
File "C:/Users/Dell/wavelet.py", line 88, in <module>
legend_params = list(lab = "wavelet power levels", mar = 4.7))
TypeError: list() takes no keyword arguments
Я попытался создать Rlist через rinterface
, но создается объект, не являющийся типом, что также показывает ошибку.
Продолжите предыдущий пример:
import rpy2.rinterface as ri
ri.initr()
lista = ri.initr('ListVector(lab = "wavelet power levels", mar = 4.7)')
wvt.wt_image(cwt, color_key = "quantile", main = (trayectoria + ' - ' + agregado),
n_levels = 250, show_date = True, periodlab = "period (months)",
legend_params = lista)
File "C:\WPy64-3760\python-3.7.6.amd64\lib\site-packages\rpy2\robjects\conversion.py", line 60, in _py2ri
raise NotImplementedError("Conversion 'py2ri' not defined for objects of type '%s'" % str(type(obj)))
NotImplementedError: Conversion 'py2ri' not defined for objects of type '<class 'NoneType'>'
Я был бы очень рад тому, кто мог бы мне помочь. Большое спасибо.