我有以下2个矩阵。
#generate matrices
x11=matrix(rep("green",2), 4, (2))
y11=matrix(c(1,0,0,1,0,0,1,1),nrow=4,byrow = T)
> x11
[,1] [,2]
[1,] "green" "green"
[2,] "green" "green"
[3,] "green" "green"
[4,] "green" "green"
> y11
[,1] [,2]
[1,] 1 0
[2,] 0 1
[3,] 0 0
[4,] 1 1
所以现在我需要通过考虑y11的值来更改x11的(i,j)索引的值。这意味着如果y11的值为零,那么我需要将x11的索引更改为红色。 (例如:由于第一行和第二列的y11的值为零,因此我需要将x11的第一行和第二列的值更改为红色)
为此,我使用了以下代码段。但这似乎不起作用。
x11[y11] = "red"
有人可以帮我解决这个问题吗?
答案 0 :(得分:3)
我们可以创建一个带有'y11'的逻辑矩阵,即!y11
对于所有0以及其他的FALSE返回TRUE。使用它来对“ x11”进行子集并将这些元素分配给“红色”
x11[!y11] <- "red"
如果我们不想更改初始矩阵,请使用replace
replace(x11, !y11, "red")