首页 > 解决方案 > rpy2 pass : 在函数参数中

问题描述

尝试使用 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')

我找不到k="1:3"在函数中传递参数的cutree方法。

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

""elements of 'k' must be between 1 and %d",  :
  missing value where TRUE/FALSE needed

似乎我找不到正确的语法来执行最后一行。

有人可以帮我解决这个问题吗

标签: pythonrpy2

解决方案


1:3表达式旨在生成 R 中的向量c(1, 2, 3)。但是,您不是在 R 中评估它,而是'1:3'使用 rpy2 将其作为字符串/字符传递。尝试传递等效列表[1, 2, 3],或使用list(range(1, 3 + 1)). 这是:

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

推荐阅读