我想删除列名向量中任何一列中包含NA
的行。
下面是一个只有几列的简化示例。
data <- structure(list(sample_id = c("2023.01.12_2", "2023.01.12_27",
"2023.01.12_27", "2023.01.12_3", "2023.01.12_27", "2023.01.12_27",
"2023.01.12_4", "2023.01.12_27", "2023.01.12_27", "2023.01.12_5"
), group = c("Unedited", "Rob", "Rob", "Partial_promoter", "Rob",
"Rob", "Promoter_and_ATG", "Rob", "Rob", "ATG"), day = c(6, NA,
NA, 6, NA, NA, 6, NA, NA, 6), x = c(114.243333333333, 115.036666666667,
115.073333333333, 114.41, 116.11, 116.163333333333, 113.426666666667,
116.15, 117.253333333333, 113.46)), row.names = c(NA, -10L), class = "data.frame")
cols <- c("group", "day")
我试过几种方法,但都不管用。下面这一种似乎管用。
data %>%
filter(across(.cols = cols, .fns = ~ !is.na(.x)))
但是当我试着反转它,选择NA
的列(为了质量控制的目的,我想保留它们,但只是分开),我什么也得不到:
data %>%
filter(across(.cols = cols, .fns = ~ is.na(.x)))
有什么想法吗?
2条答案
按热度按时间zd287kbt1#
当
group
或day
满足is.na
条件时,您可能需要使用if_any
进行过滤还有一个
if_all
帮助器来检查是否所有cols
都满足na
的条件:这将返回无结果,因为只有
day
满足条件。由于出现了关于在
filter
中使用across
的警告,您可以通过以下方式替换第一个过滤器:gtlvzcf82#
您可以根据您提到的列使用
drop_na
和any_of
。创建于2023年1月16日,使用reprex v2.0.2