符号矩阵乘法错误(Ryacas)

符号矩阵乘法错误(Ryacas),r,matrix,yacas,R,Matrix,Yacas,我想使用一个函数对Ryacas执行符号矩阵运算,该函数将基本R矩阵转换为Ryacas格式。函数的结果似乎与Ryacas的格式相匹配。但当我尝试乘以矩阵时,误差 # Error in aa %*% aa : requires numeric/complex matrix/vector arguments 投掷。下面的代码是一个简单的示例,展示了这种情况 有什么建议吗 library(Ryacas) conv.mat <- function(x) { conv <- lapply

我想使用一个函数对
Ryacas
执行符号矩阵运算,该函数将基本
R
矩阵转换为
Ryacas
格式。函数的结果似乎与Ryacas的格式相匹配。但当我尝试乘以矩阵时,误差

# Error in aa %*% aa : requires numeric/complex matrix/vector arguments
投掷。下面的代码是一个简单的示例,展示了这种情况

有什么建议吗

library(Ryacas)

conv.mat <- function(x) {
  conv <- lapply(1:nrow(x), function(i) paste0(x[i, ], collapse = ", "))
  conv <- paste0("List(", paste0("List(", unlist(conv), ")", collapse = ", "), ")")
  noquote(conv)
}

# Writing a matrix manually for Ryacas format

a <- List(List(1, 2), List(3, 7))
a * a
# expression(list(list(7, 16), list(24, 55)))


# Writing a matrix in R and convert it to Ryacas format by the function conv.mat

aa <- matrix(c(1, 2, 3, 7), 2, byrow = TRUE)
aa <- conv.mat(aa)
# [1] List(List(1, 2), List(3, 7))

aa * aa
# Error in aa * aa : non-numeric argument to binary operator
库(Ryacas)

conv.mat首先,将
Ryacas
矩阵相乘
aa*aa
而不是
aa%*%aa
。但这一点在您的案例中并没有帮助,因为
conv.mat
并不能提供我们所需要的(表达式)

我们可以使用,例如

conv.mat <- function(x)
  do.call(List, lapply(1:nrow(x), function(r) do.call(List, as.list(x[r, ]))))

conv.mat谢谢。实际上,在我的原始代码中,我使用了
aa*aa
,但我在这里忽略了它。我试图在函数中使用
parse(text=conv)
来获得
表达式,但没有成功。
M <- matrix(c(1, 2, 3, 7), 2, byrow = TRUE)
M %*% M
#      [,1] [,2]
# [1,]    7   16
# [2,]   24   55
M <- conv.mat(M)
M * M
# expression(list(list(7, 16), list(24, 55)))