如果前一列中的单元格为NA,我试图循环遍历矩阵并将单元格值更改为NA。
它是一个有9个cols和57772行的大矩阵。尝试不同的for循环,但我似乎无法正确。
简而言之,这个矩阵。
m <- structure(c("X","X","X","X","X","X", NA, "X", "X", NA, NA, "X", "X", NA, NA, "X", "X",
NA, NA, NA, "X", NA, NA, NA, "X"), .Dim = c(5L, 5L), .Dimnames = list(
NULL, c("1", "2", "3", "4","5")))
应该成为这个
1 2 3 4 5
[1,] "X" "X" NA NA NA
[2,] "X" NA NA NA NA
[3,] "X" "X" "X" NA NA
[4,] "X" "X" NA NA NA
[5,] "X" NA NA NA NA
但是这个循环
for(j in ncol(m):2) m[, j] <- ifelse(is.na(m[, j-1]), NA, m[, j])
它只会变成这个
1 2 3 4 5
[1,] "X" "X" NA NA "X"
[2,] "X" NA NA "X" NA
[3,] "X" "X" "X" NA NA
[4,] "X" "X" NA NA NA
[5,] "X" NA NA NA NA
答案 0 :(得分:1)
一个简单的循环就足够了。
for(j in 2:ncol(m) m[, j] <- ifelse(is.na(m[, j-1]), NA, m[, j])
,并提供:
1 2 3 4 5
[1,] "X" "X" NA NA NA
[2,] "X" NA NA NA NA
[3,] "X" "X" "X" NA NA
[4,] "X" "X" NA NA NA
[5,] "X" NA NA NA NA
可重复形式的输入是:
m <- structure(c(NA, NA, "X", NA, NA, NA, NA, "X", NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, "X"), .Dim = c(5L, 4L), .Dimnames = list(
NULL, c("1", "2", "3", "4")))