Python-RPy - “x$terms 中的错误:$ 运算符对原子向量无效”
Posted
技术标签:
【中文标题】Python-RPy - “x$terms 中的错误:$ 运算符对原子向量无效”【英文标题】:Python-RPy - "Error in x$terms : $ operator is invalid for atomic vectors" 【发布时间】:2013-01-19 04:37:04 【问题描述】:我是 RPy 的新手,如果我的问题是微不足道的,请原谅。我正在尝试在 Python 中编写此主题的最佳解决方案:Screening (multi)collinearity in a regression model,但出现以下错误:
rpy.RPy_RException: x$terms 中的错误:$ 运算符对原子向量无效
我写的代码:
from rpy import *
r.set_seed(42)
a=r.rnorm(100)
b=r.rnorm(100)
m=r.model_matrix('~a+b')
我做错了什么?
编辑: 使用 agstudy 写的回复(感谢您的帮助!)我准备了适用于 rpy2 的解决方案
from rpy2 import robjects
rset_seed = robjects.r('set.seed')
fmla = robjects.Formula('~a+b')
model_matrix = robjects.r('model.matrix')
rnorm = robjects.r('rnorm')
rset_seed(42)
env = fmla.environment
env['a']=rnorm(100)
env['b']=rnorm(100)
m=model_matrix(fmla)
【问题讨论】:
【参考方案1】:这应该可以工作
fmla = r.Formula('~a+b')
env = fmla.environment
env['a'] = a
env['b'] = b
r.model_matrix(fmla)
在 R 中,您可以重现错误
set_seed(42)
a=rnorm(100)
b=rnorm(100)
m=model.matrix('~a+b')
Error: $ operator is invalid for atomic vectors
m=model.matrix(formula('~a+b')) ## this works
(Intercept) a b
1 1 -0.1011361 0.4354445
2 1 0.3782215 -1.5322641
3 1 1.4772023 0.3280948
4 1 0.2892421 1.9012016
5 1 -0.2596562 0.2036678
6 1 -0.5585396 -0.1536021
【讨论】:
m=model.matrix(~a+b)
怎么样?
@MatthewLundberg 谢谢。这当然适用于 R。但是 rpy/rpy2 呢?
我在 rpy 中检查了 'm=r.model_matrix(r.formula("~a+b"))',但出现以下错误:'rpy.RPy_RException: Error in eval(expr, envir, enclos) : 对象“a”未找到'
@user1633361 我更新了我的答案。我没有 rpy 控制台来测试我的答案。我基本上给了你这个想法。以上是关于Python-RPy - “x$terms 中的错误:$ 运算符对原子向量无效”的主要内容,如果未能解决你的问题,请参考以下文章