rpy2有问题,rpart将数据正确地从python传递到r

rpy2有问题,rpart将数据正确地从python传递到r,python,r,rpy2,Python,R,Rpy2,我正在尝试使用Python2.6.5和R10.0通过RPY2运行rpart 我用python创建了一个数据帧并传递了它,但我得到了一个错误声明: Error in function (x) : binary operation on non-conformable arrays Traceback (most recent call last): File "partitioningSANDBOX.py", line 86, in <module> model=r.rp

我正在尝试使用Python2.6.5和R10.0通过RPY2运行rpart

我用python创建了一个数据帧并传递了它,但我得到了一个错误声明:

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
两个变量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
In [3]: print Rformula
------> print(Rformula)
responsev ~ .
公式如下所示:

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
In [3]: print Rformula
------> print(Rformula)
responsev ~ .

问题与rpart中的R特殊代码有关(准确地说,以下代码块,特别是最后一行):

m <- match.call(expand.dots = FALSE)
m$model <- m$method <- m$control <- NULL
m$x <- m$y <- m$parms <- m$... <- NULL
m$cost <- NULL
m$na.action <- na.action
m[[1L]] <- as.name("model.frame")
m <- eval(m, parent.frame())

问题与rpart中的R特殊代码有关(准确地说,以下代码块,特别是最后一行):

m <- match.call(expand.dots = FALSE)
m$model <- m$method <- m$control <- NULL
m$x <- m$y <- m$parms <- m$... <- NULL
m$cost <- NULL
m$na.action <- na.action
m[[1L]] <- as.name("model.frame")
m <- eval(m, parent.frame())

R中的数据帧是列表。也许你应该将数组传递给数组或矩阵?我尝试传递矩阵,但这也引发了一个错误。有趣的是,如果我用R.plsr替换R.rpart,它可以正常工作,并且rpart和plsr都说他们希望数据作为数据。frame…R中的数据帧是列表。也许你应该将数组传递给数组或matrices?我尝试传递矩阵,但也出现了一个错误。有趣的是,如果我用r.plsr代替r.rpart,效果很好,rpart和plsr都说他们想要数据作为数据框架……你的答案很完美,解决方案也很完美。非常感谢!我对这一点很紧张。你的答案很完美,解决方案也很好我的工作做得很好。非常感谢!我对这件事非常生气。