R 理解矩阵子设置:`mat[2,mat[1,]==1]==1`(2)
看 我无法理解以下内容:R 理解矩阵子设置:`mat[2,mat[1,]==1]==1`(2),r,matrix,R,Matrix,看 我无法理解以下内容: > alpha <- c(1, 1) / 2 > mat <- matrix(c(1 / 2, 0, 1 / 2, 1), nrow = 2, ncol = 2) # Different than yours > > chainSim <- function(alpha, mat, n) + { + out <- numeric(n) + out[1] <- sample(1:2, 1, prob = a
> alpha <- c(1, 1) / 2
> mat <- matrix(c(1 / 2, 0, 1 / 2, 1), nrow = 2, ncol = 2) # Different than yours
>
> chainSim <- function(alpha, mat, n)
+ {
+ out <- numeric(n)
+ out[1] <- sample(1:2, 1, prob = alpha)
+
+ for(i in 2:n)
+ out[i] <- sample(1:2, 1, prob = mat[out[i - 1], ])
+ out
+ }
>
> sim <- replicate(chainSim(alpha, mat, 1 + 5), n = 100)
>
> x <- (sim[2, sim[1, ] == 1] == 1)
> x
[1] FALSE FALSE FALSE TRUE TRUE FALSE TRUE TRUE FALSE TRUE FALSE TRUE TRUE TRUE
[15] TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE FALSE FALSE
[29] FALSE TRUE TRUE TRUE TRUE FALSE TRUE TRUE FALSE FALSE TRUE TRUE TRUE TRUE
[43] TRUE FALSE FALSE FALSE
>
见下文:
> alpha <- c(1, 1) / 2
> mat <- matrix(c(1 / 2, 0, 1 / 2, 1), nrow = 2, ncol = 2) # Different than yours
>
> chainSim <- function(alpha, mat, n)
+ {
+ out <- numeric(n)
+ out[1] <- sample(1:2, 1, prob = alpha)
+
+ for(i in 2:n)
+ out[i] <- sample(1:2, 1, prob = mat[out[i - 1], ])
+ out
+ }
>
> sim <- replicate(chainSim(alpha, mat, 1 + 5), n = 100)
>
> x <- (sim[2, sim[1, ] == 1] == 1)
> x
[1] FALSE FALSE FALSE TRUE TRUE FALSE TRUE TRUE FALSE TRUE FALSE TRUE TRUE TRUE
[15] TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE FALSE FALSE
[29] FALSE TRUE TRUE TRUE TRUE FALSE TRUE TRUE FALSE FALSE TRUE TRUE TRUE TRUE
[43] TRUE FALSE FALSE FALSE
>
OP的问题
如果x只由一些真值和假值组成,那么x的平均值怎么可能变成一个数值呢
> sim <- replicate(chainSim(alpha, mat, 1 + 5), n = 100)
>
> x <- (sim[2, sim[1, ] == 1] == 1)
> y <- mean(x)
> y
[1] 0.6086957
根据?logical
在需要数值的上下文中,逻辑向量被强制为整数向量,TRUE被映射为1L,FALSE被映射为0L,NA被映射为NA_integer_
因此,取逻辑向量的平均值
类似于整数
向量
mean(c(1, 0, 1, 1, 0))
#[1] 0.6
mean(c(TRUE, FALSE, TRUE, TRUE, FALSE))
#[1] 0.6
在内部,它是1和0,检查
平均值(c(1,0,1,1,0))[1]0.6#平均值(c(真,假,真,真,假))[1]0.6
`