具有多个条件的R子集

时间:2015-02-13 11:50:43

标签: r matrix subset

我试图根据矩阵beta的标准最佳地改变矩阵alpha中的值:

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

这会beta 1 2 3alpha 0 2 3 0 2 3 0 2 3。{/ p>

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

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

这仍然会alpha 0 2 3 0 2 3 0 2 3,而不是0 2 3 0 0 0 0 0 0,这是我想要的。我如何使它工作?

1 个答案:

答案 0 :(得分:2)

我假设你想要处理矩阵的前半部分,只替换适合某个标准的值。在您的情况下> 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