用R中的另一个变量索引一个变量

时间:2018-10-17 06:05:43

标签: r indexing

我有以下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"

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:3)

我们可以创建一个带有'y11'的逻辑矩阵,即!y11对于所有0以及其他的FALSE返回TRUE。使用它来对“ x11”进行子集并将这些元素分配给“红色”

x11[!y11] <- "red"

如果我们不想更改初始矩阵,请使用replace

replace(x11, !y11, "red")