您可以使用apply()
:
set.seed(42)
test <- matrix(sample(c(3:12, NA), 20, repl=TRUE), 5)
test <- as.data.frame(test)
test$`NA` <- c("No NA value", "NA value")[1 + apply(is.na(test), 1, any)]
test
# V1 V2 V3 V4 NA
# 1 NA 8 8 NA NA value
# 2 NA 11 10 NA NA value
# 3 6 4 NA 4 NA value
# 4 12 10 5 8 No NA value
# 5 10 10 8 9 No NA value
命名的新栏目“NA”不是一个好主意,因为NA
是预先定义d在R
。如果您不需要在新列的标贴,你可以使用
test$NAindicator <- apply(is.na(test), 1, any)
你也可以保存test
为矩阵:
set.seed(42)
test <- matrix(sample(c(3:12, NA), 20, repl=TRUE), 5)
test <- cbind(test, apply(is.na(test), 1, any))
test
# [,1] [,2] [,3] [,4] [,5]
# [1,] NA 8 8 NA 1
# [2,] NA 11 10 NA 1
# [3,] 6 4 NA 4 1
# [4,] 12 10 5 8 0
# [5,] 10 10 8 9 0
,或者你可以把它放在一个列表:
list(mat=test, NAindicator=apply(is.na(test), 1, any))
'测试$ NA < - C( “否NA值”, “NA值”)[1个+ as.integer(申请(is.na(测试), 1,any))]' – jogo