首页 > 解决方案 > R CVXR 矩阵乘法 %*% mul_dims_promote(lh_dim, rh_dim) 中的错误:尺寸不兼容

问题描述

您好,我正在尝试从这里运行示例:http ://rtutorial.altervista.org/lp_solvers.html

一个片段并测试它出错的地方:

library(CVXR)
#create Variable objects that can be manipulated by the solver.
x<-Variable(3)
#coefficients for objective function
C<-c(2,4,3)

#problem:
C %*% x

错误:mul_dims_promote(lh_dim, rh_dim) 中的错误:尺寸不兼容

> x
[1] "Variable((3, 1), nonneg=FALSE, nonpos=FALSE, pos=FALSE, neg=FALSE, complex=FALSE, imag=FALSE, symmetric=FALSE, diag=FALSE, PSD=FALSE, NSD=FALSE, hermitian=FALSE, boolean=FALSE, integer=FALSE, )"
> C
[1] 2 4 3
> 
> dim(x)
[1] 3 1
> dim(C)
NULL
> 
> class(x)
[1] "Variable"
attr(,"package")
[1] "CVXR"
> class(C)
[1] "numeric"

问题可能出在

%*%

它在三个不同的包中定义:在以下包中找到关于主题“%*%”的帮助:

矩阵乘法(在库 /usr/lib/R/library 的包库中) 使用 gmp 进行矩阵操作(在库 /home/gnowak/R/x86_64-pc-linux-gnu-library/3.6 的包 gmp 中)矩阵(交叉)产品(转置)(在库 /home/gnowak/R/x86_64-pc-linux-gnu-library/3.6 中的包 Matrix 中)

任何提示或提示?谢谢你。

标签: rmatrix-multiplicationrscriptcvxr

解决方案


尝试C<-c(2,4,3)C <- matrix(c(2,4,3), nrow = 1). 这遵循该网页上后面示例的语法,然后该示例对我有用。后面的示例现在也适用于我,(提示 Jordan) - 将 'x3 <- Int(1)' 替换为 'x3 <-Variable(1, integer=TRUE)',尽管链接可能会很快更新。


推荐阅读