我有一个疾病状态矩阵commercialMedExp
,其中列是状态(即"没有疾病","疾病","死&#34 ;),行是模型周期(即1,2,3,4等)。
我试图将此乘以成本commercialMedExp * states0CommercialA
的向量,其中每个成本对应于疾病状态。我尝试过以下方法:
softAssert.assertEquals('Expected','Actual',"Failed because Actual did not match expected");
但似乎乘法是跨列而不是跨行进行的。有人可以用正确的语法帮助我吗?
答案 0 :(得分:2)
列/行重新缩放是矩阵计算中的常见操作。您正在寻找列重新缩放,但我会为两者提供解决方案。
行重新缩放
$stmt = $db->query('SELECT id, par, what, title, inde
FROM tmatria
ORDER BY inde ASC
where par = ' . $_SESSION["par"] . ';');
列重新缩放
A <- matrix(1:20, nrow = 5); x <- 1:5
## Any method below is much more efficient than `diag(x) %*% A`
## method 1: recycling
A * x
## method 2: `sweep()`
sweep(A, 1L, x, "*")
你能做什么
A <- matrix(1:20, nrow = 5); y <- 1:4
## Any below method is much more efficient than `A %*% diag(y)`
## method 1: transpose + row rescaling
t(y * t(A))
## method 2: `sweep()`
sweep(A, 2L, y, "*")
## method 3: pairwise multiplication
A * rep(y, each = nrow(A))
答案 1 :(得分:0)
像
这样的东西commercialMedExp0A <- t(apply(states0CommercialA, 1, function(x){ x * commercialMedExp}))
只要states0CommericialA
中的列数与commercialMedExp
的列数相同,就可以正常工作。如果不是,则必须对数据进行子集化。例如,如果疾病状态在第13至18栏中
commercialMedExp0A <- t(apply(states0CommercialA[,c(13:18)], 1, function(x){ x * commercialMedExp}))