Python rpy2传递:在函数参数中
在尝试使用python rpy2执行下面的r代码时,我遇到了一个问题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
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'))
。