Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 替换选定列数的矩阵中的值_R_Matrix_Replace - Fatal编程技术网

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

R 替换选定列数的矩阵中的值,r,matrix,replace,R,Matrix,Replace,在给定的矩阵a,带有整数和一些NA: 如果我想用99替换所有NA,我会: a[is.na(a)]<-99 a[is.na(a)]首先子集矩阵,然后找到NAs 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,]

在给定的矩阵
a
,带有整数和一些
NA
: 如果我想用99替换所有
NA
,我会:

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

a[is.na(a)]首先子集矩阵,然后找到NAs

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
set.seed(123)
xy如果问题是为什么,而不是如何,那么答案是因为
is.na(a[,c(1:2)]
已经返回了一个二维逻辑矩阵,并且与
c(1:2)
一起,矩阵
可以处理的维度太多了。在R中调试时,您应该从内到外检查内部函数首先做什么,然后再检查最终操作。
a[is.na(a[,1:2]),1:2]<-99
a[is.na(a[,c(1:2)]),c(1:2)]<-99
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