在做矩阵的内积计算时(%*%),出现“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
。。。。。