1

私はRPyを初めて使用するので、私の質問が些細なものである場合は、すみません。このトピックからトップソリューションを書き込もうとしています: Pythonの回帰モデルでの(多重)共線性のスクリーニングですが、次のエラーが発生します:

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)
4

1 に答える 1

0

これはうまくいくはずです

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
于 2013-02-04T13:14:19.153 に答える