R中的错误消息:尝试设置';colnames';在小于二维的对象上

R中的错误消息:尝试设置';colnames';在小于二维的对象上,r,error-handling,constraints,R,Error Handling,Constraints,我有一些代码,在我没有对它施加太多约束的情况下可以工作。但是,我想运行大量的约束。是否有任何方法可以帮助解决问题,或解决此错误。我正试图规划一个有效的边界。谢谢我有下面数据时间序列的dput library("fPortfolio") library('fPortfolio') data = SPISECTOR.RET asset = dim(data)[2] # I'm putting a lot of constraints here. I want to do thi

我有一些代码,在我没有对它施加太多约束的情况下可以工作。但是,我想运行大量的约束。是否有任何方法可以帮助解决问题,或解决此错误。我正试图规划一个有效的边界。谢谢我有下面数据时间序列的dput

library("fPortfolio")
library('fPortfolio')
data = SPISECTOR.RET
asset = dim(data)[2]

# I'm putting a lot of constraints here. I want to do this. 
# If I take away some of the constraints, the formula works. 
# But I don't want to take away the constraints.
constraints <- c('minW[1:asset]=0','maxW[1:asset]=0.3', 'minsumW[c("ACWI", "ACWX", "AGED", "CEMA", "CEMG", "CMXC", "CNYA", "COMF", "CSJP", "CSKR", "CSRU", "CSUK", "DGTL", "DLTM", "ECAR", "EEM", "EFA", "EIDO", "EIRL", "EMB", "ENOR", "EPHE", "EPOL", "EUSA", "GUNR", "HEAL", "ICDU", "ICSU", "IESU", "IGAA", "IH2O", "IHCU", "IHYA", "IIND", "IISU", "IITU", "IJS", "IJT", "IMSU", "INRG", "IQLT", "IUSU", "KWEB", "LAND", "LOCK", "MGK", "OPEN", "QQQ", "RBOT", "SAUS", "SPAG", "UIFS", "UNG", "USMV", "VB", "VNQ", "VNQI", "VTV", "VUG", "WOOD", "XFVT")]=0.01', 'maxsumW[c("ACWI", "ACWX", "AGED", "CEMA", "CEMG", "CMXC", "CNYA", "COMF", "CSJP", "CSKR", "CSRU", "CSUK", "DGTL", "DLTM", "ECAR", "EEM", "EFA", "EIDO", "EIRL", "EMB", "ENOR", "EPHE", "EPOL", "EUSA", "GUNR", "HEAL", "ICDU", "ICSU", "IESU", "IGAA", "IH2O", "IHCU", "IHYA", "IIND", "IISU", "IITU", "IJS", "IJT", "IMSU", "INRG", "IQLT", "IUSU", "KWEB", "LAND", "LOCK", "MGK", "OPEN", "QQQ", "RBOT", "SAUS", "SPAG", "UIFS", "UNG", "USMV", "VB", "VNQ", "VNQI", "VTV", "VUG", "WOOD", "XFVT")]=0.3', 'minsumW[c("BND", "CBON", "CRPA", "GLD", "SLV", "SPGP", "SWAN")]=0.01', 'maxsumW[c("BND", "CBON", "CRPA", "GLD", "SLV", "SPGP", "SWAN")]=0.3', 'minsumW[c("GLTL", "GLTS", "IBGE", "IBGY", "IBGZ", "IEF", "IGLT", "SEGA", "SHY", "TIP", "TLT", "VVUILG")]=0.01', 'maxsumW[c("GLTL", "GLTS", "IBGE", "IBGY", "IBGZ", "IEF", "IGLT", "SEGA", "SHY", "TIP", "TLT", "VVUILG")]=0.3')

spec <- portfolioSpec()
setNFrontierPoints(spec) <- 25
setSolver(spec)<- "solveRquadprog"

frontier <-portfolioFrontier(data, spec, constraints)
库(“fPortfolio”)
库('fPortfolio')
数据=SPISECTOR.RET
资产=dim(数据)[2]
#我这里有很多限制。我想这样做。
#如果我去掉一些约束条件,这个公式就行了。
#但我不想取消这些限制。

约束好的,我让它工作了。我没有将约束添加到一个,而是添加到其他库中。现在一切都好了。

好了,我把它修好了。我没有将约束添加到一个,而是添加到其他库中。现在一切都好了。

因此,如果您不介意一些评论的话,首先请为您使用的软件包命名。第二,这真的是你能创造的最小的例子吗?记住人们正在复制你的代码。你确定不必为spec设置更多的值吗?我之前在
setNFrontierPoints(spec)上遇到一个错误,因此如果你不介意一些注释,首先命名你正在使用的包会很有帮助。第二,这真的是你能创造的最小的例子吗?记住人们正在复制你的代码。你确定不必为规范设置更多的值吗?我之前在
setNFrontierPoints(spec)上遇到一个错误
Error in `colnames<-`(`*tmp*`, value = names(getMu(Data))) : 
attempt to set 'colnames' on an object with less than two dimensions