我希望在data.frame中插入一个新的列,当行中至少有一个缺失值时,该值为TRUE,否则为FALSE。
对于这个问题,apply
是一个完美的应用场景:
编辑 - 添加示例
tab <- data.frame(a = 1:10, b = c(NA, letters[2:10]), c = c(LETTERS[1:9], NA))
tab$missing <- apply(tab, 1, function(x) any(is.na(x)))
然而,我加载了strict包,并且出现了这个错误:apply()将X强制转换为矩阵,因此在使用数据框时是危险的。请改用lapply()。
我知道我可以安全地忽略这个错误,但是我想知道是否有一种使用tidyverse包之一的简单方法进行编码。我尝试过dplyr,但没有成功:
tab %>%
rowwise() %>%
mutate(missing = any(is.na(.), na.rm = TRUE))
purrr::by_row()
吗? - Hanjo Odendaalapply(is.na(tab), 1, any)
或vapply(split(tab, 1:nrow(tab)), f, logical(1))
,其中f
是问题中的匿名函数。 - G. Grothendieck