Python rpy2下的立体主义回归;下标越界“;错误

Python rpy2下的立体主义回归;下标越界“;错误,python,r,rpy2,Python,R,Rpy2,当我使用rpy2进行立体回归时,我遇到了错误: Error in strsplit(tmp, "\"")[[1]] : subscript out of bounds 我尝试使用as.matrix来更改数据格式,但仍然没有成功 import rpy2.robjects as robjects from rpy2.robjects.packages import importr from rpy2.robjects.vectors import FloatVector from rpy2.rob

当我使用rpy2进行立体回归时,我遇到了错误:

Error in strsplit(tmp, "\"")[[1]] : subscript out of bounds
我尝试使用as.matrix来更改数据格式,但仍然没有成功

import rpy2.robjects as robjects
from rpy2.robjects.packages import importr
from rpy2.robjects.vectors import FloatVector
from rpy2.robjects import pandas2ri
Cubist = importr('Cubist')
lattice = importr('lattice')
r = robjects.r
# 准备样点数据
dt = r('mtcars')
Z = FloatVector(dt[3])
X = FloatVector(dt[5])
X1 = FloatVector(dt[6])
T = r['cbind'](X,X1)

regr = r['cubist'](x=T,y=Z,committees=10)

如果是矩阵,
cubist()
x
参数似乎需要
dimnames
属性

在R中设置:

library(Cubist)

dt = mtcars
Z = dt[, 4]
X = dt[, 6]
X1 = dt[, 7]
现在比较一下(复制错误):

vs

有多种方法可确保通过
rpy2
连接DIMNAME。代码的一种简单方法是显式命名变量:

In [15]: T = r['cbind'](X=X,X1=X1)

In [16]: print(r['str'](T))
 num [1:32, 1:2] 2.62 2.88 2.32 3.21 3.44 ...
 - attr(*, "dimnames")=List of 2
  ..$ : NULL
  ..$ : chr [1:2] "X" "X1"
<rpy2.rinterface.NULLType object at 0x7f0d7c0f5608> [RTYPES.NILSXP]

In [17]: print(r['cubist'](x=T,y=Z,committees=10))

Call:
cubist.default(x = structure(c(2.62, 2.875, 2.32, 3.215, 3.44, 3.46,
 205, 215, 230, 66, 52, 65, 97, 150, 150, 245, 175, 66, 91, 113, 264, 175,
 335, 109), committees = 10L)

Number of samples: 32
Number of predictors: 2

Number of committees: 10
Number of rules per committee: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
[15]中的
T=r['cbind'](X=X,X1=X1)
在[16]中:打印(r['str'](T))
num[1:32,1:2]2.622.882.323.213.44。。。
-属性(*,“dimnames”)=2个列表
..$:空
..$:chr[1:2]“X”“X1”
[RTYPES.NILSXP]
在[17]中:印刷体(r['cubist'](x=T,y=Z,x=10))
电话:
立体主义默认(x=结构(c)(2.62,2.875,2.32,3.215,3.44,3.46,
205, 215, 230, 66, 52, 65, 97, 150, 150, 245, 175, 66, 91, 113, 264, 175,
335109),委员会=10L)
样本数目:32
预测数:2
委员会数目:10
每个委员会的规则数:1,1,1,1,1,1,1,1,1,1,1,1

如果是矩阵,
cubist()
x
参数似乎需要
dimnames
属性

在R中设置:

library(Cubist)

dt = mtcars
Z = dt[, 4]
X = dt[, 6]
X1 = dt[, 7]
现在比较一下(复制错误):

vs

有多种方法可以确保通过
rpy2
附加dimnames。使用代码的一种简单方法就是显式命名变量:

In [15]: T = r['cbind'](X=X,X1=X1)

In [16]: print(r['str'](T))
 num [1:32, 1:2] 2.62 2.88 2.32 3.21 3.44 ...
 - attr(*, "dimnames")=List of 2
  ..$ : NULL
  ..$ : chr [1:2] "X" "X1"
<rpy2.rinterface.NULLType object at 0x7f0d7c0f5608> [RTYPES.NILSXP]

In [17]: print(r['cubist'](x=T,y=Z,committees=10))

Call:
cubist.default(x = structure(c(2.62, 2.875, 2.32, 3.215, 3.44, 3.46,
 205, 215, 230, 66, 52, 65, 97, 150, 150, 245, 175, 66, 91, 113, 264, 175,
 335, 109), committees = 10L)

Number of samples: 32
Number of predictors: 2

Number of committees: 10
Number of rules per committee: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
[15]中的
T=r['cbind'](X=X,X1=X1)
在[16]中:打印(r['str'](T))
num[1:32,1:2]2.622.882.323.213.44。。。
-属性(*,“dimnames”)=2个列表
..$:空
..$:chr[1:2]“X”“X1”
[RTYPES.NILSXP]
在[17]中:印刷体(r['cubist'](x=T,y=Z,x=10))
电话:
立体主义默认(x=结构(c)(2.62,2.875,2.32,3.215,3.44,3.46,
205, 215, 230, 66, 52, 65, 97, 150, 150, 245, 175, 66, 91, 113, 264, 175,
335109),委员会=10L)
样本数目:32
预测数:2
委员会数目:10
每个委员会的规则数:1,1,1,1,1,1,1,1,1,1,1,1

我的专业是遥感。接下来,我需要计算遥感图像数据。当我用GDAL读取图像时,如何将其转换为立体预测的R数据格式?dt=GDAL.Open(“H:/bathmetry/GF6/cart/layer_stac”)blue=dt.GetRasterBand(1)。ReadAsArray(0,0,dt.RasterXSize,dt.RasterYSize)green=dt.GetRasterBand(2).ReadAsArray(0,0,dt.RasterXSize,dt.RasterYSize)Blue=np.array(Blue)B=Blue.ravel()绿色=np.array(绿色)G=Green.ravel()X_test=np.vstack((B,G))我在Cubist项目页面上提出了这个问题:我的专业是遥感。接下来,我需要计算遥感图像数据。当我用GDAL读取图像时,如何将其转换为R的数据格式进行立体预测?dt=GDAL.Open(“H:/bathmetry/GF6/cart/layer_stac”)blue=dt.GetRasterBand(1).ReadAsArray(0,0,dt.RasterXSize,dt.RasterYSize)green=dt.GetRasterBand(2).ReadAsArray(0,0,dt.RasterXSize,dt.RasterYSize)Blue=np.array(Blue)B=Blue.ravel()green=np.array(green)G=green.ravel()X_test=np.vstack((B,G))我在立体主义项目页面上提出了这个问题: