Попробуйте:
from rpy2.robjects.packages import SignatureTranslatedAnonymousPackage
import rpy2.robjects as ro
string = """
cc <- function(x,y) {
xx <- unlist(x, recursive=FALSE)
yy <- unlist(y, recursive=FALSE)
ccf(xx, yy)
}
"""
powerpack = SignatureTranslatedAnonymousPackage(string, "powerpack")
x = [1,2,3,4,5,5]
y = [5,6,7,8,8,9]
x = ro.Vector(x)
y = ro.Vector(y)
print (powerpack.cc(x,y))
Объяснение:
- Сначала, если вы сделаете
ro.Vector(tuple(x))
, вы получите другую ошибку.
NotImplementedError: Conversion 'py2ri' not defined for objects of type ''
По крайней мере, для моей версии python (3.7.0).Так что это, вероятно, не то, что вы хотите.
Если две переменные превращаются в векторы из списков и затем передаются в R, они фактически являются списками списков (каждый элемент является собственным списком из 1 элемента).Поэтому вам необходимо
unlist()
, прежде чем вы сможете подать
ccf()
.Обратите внимание, что в этом случае вы действительно получаете сообщение об ошибке.