替换选定列数的矩阵中的值

时间:2015-08-30 07:50:22

标签: r matrix replace

在给定矩阵a中,使用整数和一些NA: 如果我想用99替换所有NA,我会这样做:

a[is.na(a)]<-99

我是否只想对第2列执行相同的操作,以下情况很有效:

a[is.na(a[,2]),2]<-99

但是如果我想为col 1和2做这个,那么这不起作用:

a[is.na(a[,1:2]),1:2]<-99

既不

a[is.na(a[,c(1:2)]),c(1:2)]<-99

它说(对不起,用法语):

  {p> [<-*tmp*,is.na(a [,c(1:2)]),c(1:2),值= 99)出错:
  (下标)indice logique trop long

有谁知道为什么?

1 个答案:

答案 0 :(得分:1)

首先对矩阵进行子集化,然后找到NA。

set.seed(123)
xy <- matrix(NA, ncol = 3, nrow = 3)
xy[sample(1:9, 4)] <- runif(4)
xy

          [,1]      [,2]      [,3]
[1,] 0.7883051 0.4089769        NA
[2,]        NA        NA        NA
[3,]        NA 0.8830174 0.2875775

xy[, 1:2][is.na(xy)[, 1:2]] <- 99
xy

           [,1]       [,2]      [,3]
[1,]  0.7883051  0.4089769        NA
[2,] 99.0000000 99.0000000        NA
[3,] 99.0000000  0.8830174 0.2875775