decompose_MatProd {lazy.symbolic} | R Documentation |
Decompose Matrix Product
Description
Decompose a product of matrices into factors
元のdecomposed_MatProdはdeprecate予定
Usage
decompose_MatProd(
expr,
op = "+",
return_op = FALSE,
flat = FALSE,
target_X = NULL
)
decompose_MatProd(
expr,
op = "+",
return_op = FALSE,
flat = FALSE,
target_X = NULL
)
Arguments
expr |
an expression or a string |
op |
??? |
return_op |
??? |
flat |
??? |
target_X |
??? |
Details
Currently, nested expressions may not be handled correctly in some cases, so caution is advised.
Value
a list of terms/factors and, if requested, a vector of operators
Examples
modify_math_operators()
# example code
decompose_MatProd("A%*%B%*%C%*%D%*%E", "%*%")
decompose_MatProd("A%*%B%*%C%*%D%*%E", "*")
decompose_MatProd("a+b-c+d+e", c("+"), return_op = TRUE)
decompose_MatProd("a+b-c+d+e", c("+"), return_op = TRUE)
decompose_MatProd("a+b-c+d+e", c("-", "+"), return_op = TRUE)
decompose_MatProd("a+b-(c+d)+e", c("-", "+"), return_op = TRUE)
decompose_MatProd("a+b-(c+d)+e", c("+"), return_op = TRUE)
decompose_MatProd("a+b--e", c("+"), return_op = TRUE)
decompose_MatProd("a+b-+e", c("-", "+"), return_op = TRUE)
decompose_MatProd("+a++b-+-c+-d-+e", c("-", "+"), return_op = TRUE)
decompose_MatProd("A%*%B%*%((X%*%C)%*%D)", "%*%", flat = TRUE)
decompose_MatProd("A*B*((X%*%C)*D)", "%*%", flat = TRUE)
decompose_MatProd("A*B*((X*C)*D)", "*", flat = TRUE)
drop_parens("A*B*((X*C)*D)") |> decompose_MatProd("*", flat = TRUE)
decompose_MatProd("A+B-((X+C)+D)-E", c("+", "-"), flat = TRUE, return_op = TRUE)
decompose_MatProd("A+B-((X+C)+D)-E", c("+"), flat = TRUE, return_op = TRUE)
decompose_MatProd("A+B-((X+C)+D)-E", c("+"), flat = FALSE, return_op = TRUE)
decompose_MatProd("A+(B+C)+(X+D)", "+", target_X = "X")
decompose_MatProd("A+(B+C)+((X+D)+E)", "+", target_X = "X")
decompose_MatProd("A+B-((X+C)+D)-E", c("+", "-"), flat = TRUE, return_op = TRUE)
decompose_MatProd("A+B-((X+C)+D)-E", c("+"), flat = TRUE, return_op = TRUE)
decompose_MatProd("A+B-((X+C)+D)-E", c("+"), flat = FALSE, return_op = TRUE)
decompose_MatProd("A+(B+C)+(X+D)", "+", target_X = "X")
decompose_MatProd("A+(B+C)+((X+D)+E)", "+", target_X = "X")
decompose_MatProd("A+(B+C)+((X+D)+(E+F))", "+", target_X = "X")
decompose_MatProd("(A%*%X)%*%B", "%*%")
decompose_MatProd("(A%*%X)%*%B", "%*%", flat = TRUE)
decompose_MatProd("A%*%((X%*%B))", "%*%", flat = TRUE)
decompose_MatProd("A%*%(((((X))%*%B)))", "%*%", flat = TRUE)
# flatの修正
decompose_MatProd("X-(A+B)", c("+", "-"), flat = TRUE, return_op=TRUE)
decompose_MatProd("X-(A+B)", c("+"), flat = TRUE, return_op=TRUE)
# example code
## Not run:
testthat::expect_equal(
decompose_MatProd("A+(B+C)+((X+D)+(E+F))", "+", target_X = "X") |>
sapply(safe_deparse), c("A", "(B+C)", "X", "D", "(E+F)")
)
## End(Not run)
[Package lazy.symbolic version 1.0.0.20250803 ]