【问题标题】:Can't access kmeans withinss value with Rpy2无法使用 Rpy2 访问 kmeans insidess 值
【发布时间】:2021-03-04 22:38:29
【问题描述】:

我正在尝试将一些旧的 Python 代码从 Rpy1 更新到 Rpy2,但是有几行我无法在没有错误的情况下运行:

result = rpy.r.kmeans(datnorm, cls, kmeans_iterations, kmeans_nstart)
sse = sum(result['withinss'])

我将 Rpy 依赖项更新为 Rpy2 并重构此代码以使用 Rpy2 importr 加载 R stats 模块和 kmeans 函数。这是更改后代码的样子:

result = rstats.kmeans(matnorm, cls, kmeans_iterations, kmeans_nstart)
sse = sum(result['withinss'])

当这段代码运行时,我得到这个错误:

TypeError: Indices must be integers or slices, not <class 'str'>

我明白这是说我不能使用字符串作为索引,因为kmeans 正在返回一个整数向量。如果结果不是字典,我如何获得 withinss 值?

【问题讨论】:

    标签: python r rpy2


    【解决方案1】:

    .rx2() 可能就是你想要的:

    result.rx2('withinss')
    

    (见https://rpy2.github.io/doc/v3.4.x/html/vector.html#extracting-r-style

    【讨论】:

    • 完美!我最终意识到我可以通过result[4] 访问内部总数,但这显然是正确的方法。
    • 是的。它也有效。为了避免 R 库更改 result 中元素的顺序时出现意外,您还可以执行类似 result[result.names.index('withinss')] 的操作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-28
    • 1970-01-01
    • 2011-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多