如何在一个矩阵中找到 NA 值的索引并从 R 中的另一个矩阵中删除这些索引?
How to find indices of NA values in one matrix and remove these indices from another matrix in R?
我有 2 个矩阵 (8760,318)。
A = 1 2 3 4
5 6 7 8
9 0 1 11
1 8 3 7
B = NA NA NA NA
NA NA NA NA
1 3 5 7
2 4 6 8
我想在矩阵 B 中找到 NA 值的索引,并删除与矩阵 A 和矩阵 B 中的这些索引对应的值。最后我想要
A = 9 0 1 11
1 8 3 7
B = 1 3 5 7
2 4 6 8
我也想保护矩阵形式(x,318)。到目前为止我尝试过的所有方法都破坏了矩阵形式并给了我一个有 1 行的向量。
对于 A(有点笨拙,也许我会编辑)
A[!is.na(B)[,1],]
对于乙
na.omit(B)
如何将 A 中属于 B 中 NA
的所有值放入 NA
并将 na.omit() 应用于 A?
for (i in 1:nrow(B)) { for (j in 1:ncol(B)) { if (is.na(B[i,j])) A[i,j] = NA } }
na.omit(A)
我建议先转换为数据框。
A <- as.data.frame(A)
# 'data.frame': 4 obs. of 4 variables:
# $ V1: num 1 5 9 1
# $ V2: num 2 6 0 8
# $ V3: num 3 7 1 3
# $ V4: num 4 8 11 7
B <- as.data.frame(B)
使用以下内容过滤掉所有条目为 NA
的行。这也确保您不会得到许多无法格式化为类似 table 结构的元素
isrowallna <- apply(B, 1, function(x) all(is.na(x)))
适当过滤数据框
A <- A[!isrowallna,]
B <- B[!isrowallna,]
还原为矩阵
A <- as.matrix(A)
# num [1:2, 1:4] 9 1 0 8 1 3 11 7
# - attr(*, "dimnames")=List of 2
# ..$ : chr [1:2] "3" "4"
# ..$ : chr [1:4] "V1" "V2" "V3" "V4"
B <- as.matrix(B)
您的数据
A = matrix(c(1, 2, 3, 4,
5, 6, 7, 8,
9, 0, 1, 11,
1, 8, 3, 7), nrow=4, byrow=TRUE)
B = matrix(c(NA, NA, NA, NA,
NA, NA, NA, NA,
1, 3, 5, 7,
2, 4, 6, 8), nrow=4, byrow=TRUE)
我有 2 个矩阵 (8760,318)。
A = 1 2 3 4
5 6 7 8
9 0 1 11
1 8 3 7
B = NA NA NA NA
NA NA NA NA
1 3 5 7
2 4 6 8
我想在矩阵 B 中找到 NA 值的索引,并删除与矩阵 A 和矩阵 B 中的这些索引对应的值。最后我想要
A = 9 0 1 11
1 8 3 7
B = 1 3 5 7
2 4 6 8
我也想保护矩阵形式(x,318)。到目前为止我尝试过的所有方法都破坏了矩阵形式并给了我一个有 1 行的向量。
对于 A(有点笨拙,也许我会编辑)
A[!is.na(B)[,1],]
对于乙
na.omit(B)
如何将 A 中属于 B 中 NA
的所有值放入 NA
并将 na.omit() 应用于 A?
for (i in 1:nrow(B)) { for (j in 1:ncol(B)) { if (is.na(B[i,j])) A[i,j] = NA } }
na.omit(A)
我建议先转换为数据框。
A <- as.data.frame(A)
# 'data.frame': 4 obs. of 4 variables:
# $ V1: num 1 5 9 1
# $ V2: num 2 6 0 8
# $ V3: num 3 7 1 3
# $ V4: num 4 8 11 7
B <- as.data.frame(B)
使用以下内容过滤掉所有条目为 NA
的行。这也确保您不会得到许多无法格式化为类似 table 结构的元素
isrowallna <- apply(B, 1, function(x) all(is.na(x)))
适当过滤数据框
A <- A[!isrowallna,]
B <- B[!isrowallna,]
还原为矩阵
A <- as.matrix(A)
# num [1:2, 1:4] 9 1 0 8 1 3 11 7
# - attr(*, "dimnames")=List of 2
# ..$ : chr [1:2] "3" "4"
# ..$ : chr [1:4] "V1" "V2" "V3" "V4"
B <- as.matrix(B)
您的数据
A = matrix(c(1, 2, 3, 4,
5, 6, 7, 8,
9, 0, 1, 11,
1, 8, 3, 7), nrow=4, byrow=TRUE)
B = matrix(c(NA, NA, NA, NA,
NA, NA, NA, NA,
1, 3, 5, 7,
2, 4, 6, 8), nrow=4, byrow=TRUE)