2

我有一个表(t1)如下:

t1 <- array(1:20, dim=c(10,10))

      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
 [1,]    1   11    1   11    1   11    1   11    1    11
 [2,]    2   12    2   12    2   12    2   12    2    12
 [3,]    3   13    3   13    3   13    3   13    3    13
 [4,]    4   14    4   14    4   14    4   14    4    14
 [5,]    5   15    5   15    5   15    5   15    5    15
 [6,]    6   16    6   16    6   16    6   16    6    16
 [7,]    7   17    7   17    7   17    7   17    7    17
 [8,]    8   18    8   18    8   18    8   18    8    18
 [9,]    9   19    9   19    9   19    9   19    9    19
[10,]   10   20   10   20   10   20   10   20   10    20

我想将此表转换为 1 或 0。如果单元格数 >5,我们给它一个 1,如果单元格数 <5 或 = 5,我们给它一个 0。因此,转换后,表 t1 将变成如下:

      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
 [1,]    0   1    0   1    0    1    0    1    0    1
 [2,]    0   1    0   1    0    1    0    1    0    1
 [3,]    0   1    0   1    0    1    0    1    0    1
 [4,]    0   1    0   1    0    1    0    1    0    1
 [5,]    0   1    0   1    0    1    0    1    0    1
 [6,]    1   1    1   1    1    1    1    1    1    1
 [7,]    1   1    1   1    1    1    1    1    1    1
 [8,]    1   1    1   1    1    1    1    1    1    1
 [9,]    1   1    1   1    1    1    1    1    1    1
[10,]    1   1    1   1    1    1    1    1    1    1

我应该使用哪些命令?

4

2 回答 2

5

您可以只使用一个ifelse()语句:

ifelse(t1 > 5, 1, 0)

由于语句 liket1 > 5将产生一个矩阵TRUEand FALSE,并且由于 R 将TRUE其视为“ 1”和FALSE0”,因此对于此特定转换,您还可以执行以下操作:

(t1 > 5)+0
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
 [1,]    0    1    0    1    0    1    0    1    0     1
 [2,]    0    1    0    1    0    1    0    1    0     1
 [3,]    0    1    0    1    0    1    0    1    0     1
 [4,]    0    1    0    1    0    1    0    1    0     1
 [5,]    0    1    0    1    0    1    0    1    0     1
 [6,]    1    1    1    1    1    1    1    1    1     1
 [7,]    1    1    1    1    1    1    1    1    1     1
 [8,]    1    1    1    1    1    1    1    1    1     1
 [9,]    1    1    1    1    1    1    1    1    1     1
[10,]    1    1    1    1    1    1    1    1    1     1
于 2012-10-17T10:36:06.697 回答
0

我没有计时,但替代方法ifelse 是使用条件语句。

foo <- bar < 5 哦,该死,朱利叶斯以 10 秒的优势击败了我。

于 2012-10-17T11:50:14.483 回答