我有一个大型数据框,其中所有列都包含数字数据。如何评估每一行,如果行中的所有值等于零(即,当rowsum = 0时),请将这些零替换为NA。
(如果一行中只有一些值为零,我不想替换它们)
答案 0 :(得分:0)
尝试
d1[!rowSums(d1),] <- NA
d1
# V1 V2 V3 V4 V5
#1 1 3 0 1 2
#2 1 2 3 1 2
#3 4 4 4 2 1
#4 3 4 0 0 1
#5 NA NA NA NA NA
#6 5 5 4 1 0
#7 1 1 0 4 2
#8 NA NA NA NA NA
#9 4 3 3 4 1
#10 1 0 0 5 2
或者
d1[!Reduce(`|`, d1),] <- NA
d1 <- structure(list(V1 = c(1, 1, 4, 3, 0, 5, 1, 0, 4, 1), V2 = c(3,
2, 4, 4, 0, 5, 1, 0, 3, 0), V3 = c(0, 3, 4, 0, 0, 4, 0, 0, 3,
0), V4 = c(1, 1, 2, 0, 0, 1, 4, 0, 4, 5), V5 = c(2, 2, 1, 1,
0, 0, 2, 0, 1, 2)), .Names = c("V1", "V2", "V3", "V4", "V5"), row.names = c(NA,
-10L), class = "data.frame")