Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R quadprog error:(list)对象不能强制为类型';双倍';_R_Optimization - Fatal编程技术网

R quadprog error:(list)对象不能强制为类型';双倍';

R quadprog error:(list)对象不能强制为类型';双倍';,r,optimization,R,Optimization,我对R的理解在前进,但当涉及到投资组合优化时,我遇到了另一个障碍。我有一个程序,可以为资产组合输出.csv文件。第一个是投资组合的方差/协方差矩阵:covar.csv,第二个是资产的预期收益:fwdCost.csv。我试图将收益设置为-2200000,以最小化投资组合的风险(权重必须介于0和1之间)。我认为我的问题与我的.csv文件有关,但我不明白solve.QP为什么不喜欢它们 > library(quadprog) > dmat<-read.csv(file="C:/Use

我对R的理解在前进,但当涉及到投资组合优化时,我遇到了另一个障碍。我有一个程序,可以为资产组合输出.csv文件。第一个是投资组合的方差/协方差矩阵:covar.csv,第二个是资产的预期收益:fwdCost.csv。我试图将收益设置为-2200000,以最小化投资组合的风险(权重必须介于0和1之间)。我认为我的问题与我的.csv文件有关,但我不明白solve.QP为什么不喜欢它们

> library(quadprog)
> dmat<-read.csv(file="C:/Users/Desktop/RFrontier/covar.csv", head=TRUE, sep=",")
> dvec<-matrix(0, 1,length(dmat))
> amat<-read.csv(file="C:/Users/Desktop/RFrontier/fwdCost.csv", header=TRUE, sep=",")
> amat<-t(amat)
> x<-matrix(0, length(dmat), length(dmat))
> diag(x)<-1
> amat<-cbind(amat,x)
> x<--x
> amat<-cbind(amat,x)
> bvec<-c(-2200000, rep(0, length(dmat)), rep(-1,length(dmat)))
> solve.QP(dmat, dvec, amat, bvec)
>库(quadprog)
>dmat dvec amat amat x diag(x)amat x amat bvec solve.QP(dmat,dvec,amat,bvec)
产生此错误:solve.QP(dmat、dvec、amat、bvec)中的错误:
(列表)对象不能强制键入“double”

问题在于
amat
dmat
——它们不是矩阵,而是数据帧。 使用:


你可以使用“unilist”,比如

as.numeric(unlist(amat) 
is(amat)
is.data.frame(amat)
is.matrix(amat)

as.numeric(amat) 
## This should give you a similar error to the one you are seeing. 
as.numeric(unlist(amat)