问题描述
问题是什么时候出现的?
我试图使用 R
的 polr() 方法(通过 rpy2
)使用以下语句进行序数回归分析。在那个陈述中,“步数”是我的因变量。当我设置(在列标题和语句中)下划线替换空格(即 Number_of_Steps)时,一切正常。
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(Number of
我是如何尝试解决问题的?
我在 google 上搜索过,还检查了与此问题相关的 SO(例如 this one)中的不同问题。但是,我仍然没有找到这个问题的解决方案。
那么,我的问题
在使用 as.factor(variable name)
期间如何在 mass.polr()
中使用空格分隔的变量名称(即列标题)?
感谢阅读!
解决方法
这不是特定于 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
)