파이썬 2.6.5 및 R 10.0을 사용하여 RPY2를 통해 rpart를 실행하려고합니다. rpy2, rpart에서 파이썬에서 r으로 올바르게 데이터를 전달하는 데 문제가 있습니다
나는 파이썬에서 데이터 프레임을 만들고 함께 전달할하지만 오류가 나타 얻을 : 는Error in function (x) : binary operation on non-conformable arrays
Traceback (most recent call last):
File "partitioningSANDBOX.py", line 86, in <module>
model=r.rpart(**rpart_params)
File "build/bdist.macosx-10.3-fat/egg/rpy2/robjects/functions.py", line 83, in __call__
File "build/bdist.macosx-10.3-fat/egg/rpy2/robjects/functions.py", line 35, in __call__
rpy2.rinterface.RRuntimeError: Error in function (x) : binary operation on non-conformable arrays
사람은 제가이 오류를 던져 잘못하고있는 무슨 결정하는 데 도움이 수 있습니까?
import numpy as np
import rpy2
import rpy2.robjects as rob
import rpy2.robjects.numpy2ri
#Fire up the interface to R
r = rob.r
r.library("rpart")
datadict = dict(zip(['responsev','predictorv'],[cLogEC,csplitData]))
Rdata = r['data.frame'](**datadict)
Rformula = r['as.formula']('responsev ~.')
#Generate an RPART model in R.
Rpcontrol = r['rpart.control'](minsplit=10, xval=10)
rpart_params = {'formula' : Rformula, \
'data' : Rdata,
'control' : Rpcontrol}
model=r.rpart(**rpart_params)
두 변수 cLogEC 및 csplitData는 플로트 타입의 NumPy와 배열은 다음과 같습니다
내 코드의 관련 부분이있다.
In [2]: print Rdata
------> print(Rdata)
responsev predictorv
1 0.6020600 312
2 0.3010300 300
3 0.4771213 303
4 0.4771213 249
5 0.9242793 239
6 1.1986571 297
7 0.7075702 287
8 1.8115750 270
9 0.6020600 296
10 1.3856063 248
11 0.6127839 295
12 0.3010300 283
13 1.1931246 345
14 0.3010300 270
15 0.3010300 251
16 0.3010300 246
17 0.3010300 273
18 0.7075702 252
19 0.4771213 252
20 0.9294189 223
21 0.6127839 252
22 0.7075702 267
23 0.9294189 252
24 0.3010300 378
25 0.3010300 282
및 화학식은 다음과 같다 :
또한 내 데이터 프레임은 다음과 같다
문제가 rpart에서 R 특이한 코드 관련된In [3]: print Rformula
------> print(Rformula)
responsev ~ .
R의 데이터 프레임은 목록입니다. 어쩌면 당신은 배열이나 행렬에 배열을 전달해야합니까? –
나는 행렬을 전달하려고 시도했지만 오류가 발생했습니다. 흥미롭게도 r.plsr을 r.rpart로 대체하면 rpart와 plsr 모두 데이터가 data.frame ...으로 표시되기를 원합니다. – mishaF