如何在 as.factor() 中使用空格分隔的变量名来访问数据帧的数据?

问题描述

问题是什么时候出现的?

我试图使用 Rpolr() 方法(通过 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
)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...