Python rpy2传递:在函数参数中

Python rpy2传递:在函数参数中,python,rpy2,Python,Rpy2,在尝试使用python rpy2执行下面的r代码时,我遇到了一个问题 from rpy2.robjects import r import rpy2.robjects as ro from rpy2.robjects.conversion import localconverter from rpy2.robjects import pandas2ri from rpy2.robjects.packages import importr s

在尝试使用python rpy2执行下面的r代码时,我遇到了一个问题

from rpy2.robjects import r    
import rpy2.robjects as ro    
from rpy2.robjects.conversion import localconverter      
from rpy2.robjects import pandas2ri       
from rpy2.robjects.packages import importr      

stats = importr("stats")

with localconverter(ro.default_converter + pandas2ri.converter):  
         Rdataframe2 = ro.conversion.py2rpy(dtw)

 rdism = r["as.dist"](Rdataframe2)      
 ttclust = r.hclust(rdism)     
 ttclusterange = r.cutree(ttclust, k='1:3')
我找不到在
cutree
函数中传递参数
k=“1:3”

我一直收到一条错误消息,说明

""elements of 'k' must be between 1 and %d",  :
  missing value where TRUE/FALSE needed
似乎我找不到执行最后一行的正确语法


有人能帮我解决这个问题吗?

这个
1:3
表达式是用来在R中生成
c(1,2,3)
的向量。但是,您不是在R中计算它,而是使用rpy2将它作为字符串/字符
'1:3'
传递。尝试传递一个等效的列表
[1,2,3]
,或者使用
列表(范围(1,3+1))
。这是:

r.cutree(ttclust, k=list(range(1, 3 + 1)))

非常感谢你的建议,它现在运行良好。答案运行良好。rpy2的最新版本(3.4.x,IIRC)以方便函数的形式添加了一个附加选项,以帮助将R代码段(作为未计算的R语言对象)混合到Python代码中
r.cutree(ttclust,k=ro.rl('1:3'))