具有多个条件的 R 子集

R subsetting with multiple conditions

我正在尝试根据矩阵 beta 的标准以最佳方式更改矩阵 alpha 中的值:

alpha <- matrix(0,9)
beta <- matrix(1:3,3)
alpha[beta>1] <- beta[beta>1]

这给出 1 2 3beta0 2 3 0 2 3 0 2 3alpha

虽然我不确定以上是最有效的方法,但实际上我还想只更改 alpha 矩阵第一部分的值,即前三个条目(以上,因为 beta是 alpha 大小的三分之一,alpha 中的条目 mod 3 是相同的)。我尝试了以下方法:

alpha <- matrix(0,9)
beta <- matrix(1:3,3)
alpha[1:3 & beta>1] <- beta[beta>1]

这仍然是 0 2 3 0 2 3 0 2 3 的 return alpha,而不是我想要得到的 0 2 3 0 0 0 0 0 0。我如何让它发挥作用?

我假设您想处理矩阵的前半部分并仅替换符合特定标准的值。在你的情况下 > 0.

set.seed(357)
alpha <- matrix(0,10)
beta <- matrix(rnorm(5),5)
beta

           [,1]
[1,] -1.2411173
[2,] -0.5832050
[3,]  0.3947471
[4,]  1.5042111
[5,]  0.7667997

只应应用最后三行(alpha 的第 3、4 和 5 行)。

rownames(alpha) <- 1:nrow(alpha)
alpha[rownames(alpha) %in% 1:nrow(beta), ][beta > 0] <- beta[beta > 0]
alpha

        [,1]
1  0.0000000
2  0.0000000
3  0.3947471
4  1.5042111
5  0.7667997
6  0.0000000
7  0.0000000
8  0.0000000
9  0.0000000
10 0.0000000