首页 > 解决方案 > rpy2 - sqrt(e.pow)中的错误:数学函数的非数字参数

问题描述

我在 rpy2 中使用来自 Rand Wilcox 的强大统计包,并且在运行用于比较 n 组的强大测试时遇到了障碍。

以下函数采用 DataFrame,据我从文档中可以看出,整数表示因变量的列和组分配:

wilcox.btrim(df,g=2,dp=1)

当我从 rpy2 运行它时,我得到了错误:

Error in sqrt(e.pow) : non-numeric argument to mathematical function

如果作为第一个也是唯一的输入,我传递一个列表列表或每个列包含组值的 df,则会发生相同的错误。这两种方式也是调用函数的合适方式。

这是我的数据框:

x = [1, 2, 3]
x = random.choices(x, k=150)
y = np.random.normal(0, 1, 150)

df = pd.DataFrame({
    'dependent_variable': y,
    'group_labels': x
})

df.head(10)

dependent_variable  group_labels
       -1.258020         1
        0.357578         3
        0.809774         1
        0.330426         3
       -0.210970         2

这是获取包的方法,以便您能够重现错误:

import pandas as pd
import rpy2.robjects as robjects
import random
import numpy as np
from rpy2.robjects import pandas2ri
from urllib.request import urlopen  
from rpy2.robjects.packages import SignatureTranslatedAnonymousPackage
pandas2ri.activate()


url = urlopen('https://dornsife.usc.edu/assets/sites/239/docs/Rallfun-v35.txt')
string = b''.join(url.readlines()).decode()
wilcox = SignatureTranslatedAnonymousPackage(string, "wilcox")

知道这里发生了什么吗?

标签: pythonrrpy2

解决方案


推荐阅读