0

问题是什么时候出现的?

我试图使用以下语句使用(via ) 的polr()方法进行序数回归分析。在该声明中,“步数”是我的因变量。当我设置(在列标题和语句中)下划线替换空格(即 Number_of_Steps)时,一切正常。Rrpy2

model = mass.polr('as.factor(Number of Steps) ~ Var2',
                  data=df_data, method='logistic',
                  Hess = True)
# Here, mass = importr('MASS')

但是,使用空格(即步数),我收到以下错误。

RRuntimeError:解析错误(text = x,keep.source = FALSE)::1:17
:意外符号1:as.factor(数量

我是如何尝试解决问题的?

我在谷歌上进行了搜索,还检查了与这个问题相关的 SO(例如这个)中的不同问题。但是,我仍然没有找到这个问题的解决方案。

然后,我的问题

as.factor(variable name)在使用过程中如何使用空格分隔的变量名(即列标题)mass.polr()

谢谢阅读!

4

1 回答 1

1

这不是特定于 rpy2。在 R 中,可以使用反引号 ( ` ) 来分隔包含空格的符号。

假设您的示例在其他方面是正确的,则应执行以下操作:

model = mass.polr('as.factor(`Number of Steps`) ~ Var2',
                  data=df_data, method='logistic',
                  Hess=True)

示范:

import rpy2.robjects as ro

# Get an R data frame with a column name that has
# a space.
dataf = ro.r("""
require("MASS")
cbind(housing, "My Sat"=housing$Sat)
""")

print('column names:')
print(tuple(dataf.colnames))

from rpy2.robjects.packages import importr
mass = importr('MASS')
house_plr = mass.polr(
    ro.Formula('as.factor(`My Sat`) ~ Infl + Type + Cont'),
    data = dataf
)
于 2020-12-28T04:24:20.163 回答