我试图根据矩阵beta的标准最佳地改变矩阵alpha中的值:
alpha <- matrix(0,9)
beta <- matrix(1:3,3)
alpha[beta>1] <- beta[beta>1]
这会beta
1 2 3
和alpha
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
,这是我想要的。我如何使它工作?
答案 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