我想确定两个矩阵在同一位置是否具有NA。
设置:我们有三个矩阵。我想运行一个函数,告诉我mat1和mat2在相同位置具有NA,并且告诉我mat1(和mat3)与mat2在不同位置具有NA
mat1 <- matrix(nrow=2, ncol =2, data =c(NA,0,0,NA))
mat2 <- matrix(nrow=2, ncol =2, data=c(NA,0,0,NA))
mat3 <- matrix(nrow=2, ncol=2, data = c(NA,0,0,0))
Run Code Online (Sandbox Code Playgroud)
比较所有元素的NA状态:
> all(is.na(mat1) == is.na(mat2))
[1] TRUE
> all(is.na(mat1) == is.na(mat3))
[1] FALSE
Run Code Online (Sandbox Code Playgroud)
在一个函数中,我会这样做:
> nanana = function(m1, m2){!any(is.na(m1) != is.na(m2))}
Run Code Online (Sandbox Code Playgroud)
我已经颠倒了逻辑,以便any可以停止检查是否发现任何差异。如果使用all它,则必须遍历每个元素。我不确定这种短路是否在R中,但是它可以为您节省一到两毫秒。
> nanana(mat1, mat2)
[1] TRUE
> nanana(mat1, mat3)
[1] FALSE
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
54 次 |
| 最近记录: |