在给定矩阵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
有谁知道为什么?
答案 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