R 中 requires numeric/complex matrix/vector arguments 错误

在做矩阵的内积计算时(%*%),出现“requires numeric/complex matrix/vector arguments”错误:出现错误的代码:

> a <- cbind(1,x)
> b <- fit$coefficients
> > dim(a)
[1] 50  5
> b
 (Intercept)   Population       Income   Illiteracy        Frost 
1.2345634112 0.0002236754 0.0000644247 4.1428365903 0.0005813055 
> a %*% b
Error in a %*% b : requires numeric/complex matrix/vector arguments

# 查看 a,b的数据类型
> class(a)
[1] "data.frame"
> class(b)
[1] "numeric"

可以看出,a 是一个50 x 5 的dataframe,b是一个向量,二者内积%*%相乘时需要把数据框as.matrix()声明为矩阵才可以:

> as.matrix(cbind(1,x)) %*% fit$coefficients
                    [,1]
Alabama        10.988208
Alaska          8.025660
Arizona         9.487003
Arkansas        9.833319
California     10.874248
Colorado        5.114055
Connecticut     6.910422
Delaware        5.462317
Florida         8.788211
Georgia        10.921620
Hawaii          9.619843
Idaho           4.240723
Illinois        7.870452
。。。。。

猜你喜欢

转载自blog.csdn.net/weixin_44022515/article/details/104090863