具有多个条件的 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 3
的 beta
和 0 2 3 0 2 3 0 2 3
的 alpha
。
虽然我不确定以上是最有效的方法,但实际上我还想只更改 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
我正在尝试根据矩阵 beta 的标准以最佳方式更改矩阵 alpha 中的值:
alpha <- matrix(0,9)
beta <- matrix(1:3,3)
alpha[beta>1] <- beta[beta>1]
这给出 1 2 3
的 beta
和 0 2 3 0 2 3 0 2 3
的 alpha
。
虽然我不确定以上是最有效的方法,但实际上我还想只更改 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