gpt4 book ai didi

R四编程错误: (list) object cannot be coerced to type 'double'

转载 作者:行者123 更新时间:2023-12-03 17:12:59 26 4
gpt4 key购买 nike

我对 R 的理解正在不断进步,但在投资组合优化方面我遇到了另一个障碍。我有一个程序可以生成 Assets 组合的 .csv 文件。第一个是投资组合的方差/协方差矩阵:covar.csv,第二个是 Assets 的预期返回:fwdCost.csv。我试图将返回率设置为 -2,200,000,以最大限度地降低投资组合的风险(权重必须在 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)

产生此错误:solve.QP(dmat, dvec, amat, bvec) 中出现错误: (列表)对象不能被强制输入“double”

最佳答案

问题出在 amatdmat 上——它们不是矩阵,而是 data.frames。使用:

# after reading them into R
amat <- as.matrix(amat)
dmat <- as.matrix(dmat)

然后你可以转置,以及任何你想要的。

您可以通过以下任一方式确认这是错误的根源:

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.

关于R四编程错误: (list) object cannot be coerced to type 'double' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26173371/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com