我有一个转换矩阵m:
m <- matrix(c(0, 0, 1, 0, 0, 0, 0,
0, 1, 1, 0, 0, 0, 0,
1, 0, 1, 1, 0, 0, 0,
0, 0, 0, 1, 1, 0, 0,
0, 0, 0, 0, 0, 0, 1,
0, 0, 0, 0, 0, 1, 1,
0, 0, 0, 1, 1, 0, 1),
nrow = 7, ncol = 7, byrow = TRUE,
dimnames = list(c("d1", "d2", "d3", "d4", "d5", "d6", "d7"),
c("d1", "d2", "d3", "d4", "d5", "d6", "d7"))
);
并且想要一个看起来像这样的转移概率矩阵(每行加起来为1.0)。
0.00 0.00 1.00 0.00 0.00 0.00 0.00
0.00 0.50 0.50 0.00 0.00 0.00 0.00
0.33 0.00 0.33 0.33 0.00 0.00 0.00
...
是否有允许我这样做的标准功能?
答案 0 :(得分:3)
您可以使用prop.table
:
prop.table(m, 1)
d1 d2 d3 d4 d5 d6 d7
d1 0.0000000 0.0 1.0000000 0.0000000 0.0000000 0.0 0.0000000
d2 0.0000000 0.5 0.5000000 0.0000000 0.0000000 0.0 0.0000000
d3 0.3333333 0.0 0.3333333 0.3333333 0.0000000 0.0 0.0000000
d4 0.0000000 0.0 0.0000000 0.5000000 0.5000000 0.0 0.0000000
d5 0.0000000 0.0 0.0000000 0.0000000 0.0000000 0.0 1.0000000
d6 0.0000000 0.0 0.0000000 0.0000000 0.0000000 0.5 0.5000000
d7 0.0000000 0.0 0.0000000 0.3333333 0.3333333 0.0 0.3333333
这里,参数1
表示该函数分别应用于每一行。