如何使用dplyr选择包含无穷值的数据框列?
使用dplyr筛选包含无穷值的列
要选出dataframe中包含无穷值(Inf或-Inf)的列,可结合dplyr::select()与where()函数实现,核心是对每列判断是否存在至少一个无穷值:
library(dplyr) # 构造示例数据框 df <- tibble( col1 = c(1, 2, 3), col2 = c(Inf, 4, 5), col3 = c(6, -Inf, 8), col4 = c(9, 10, 11) ) # 筛选包含无穷值的列 df_inf_cols <- df %>% select(where(~ any(is.infinite(.x)))) # 查看结果 df_inf_cols
代码说明
where()用于遍历每一列,传入的匿名函数~ any(is.infinite(.x))会检查当前列(.x)中是否存在至少一个无穷值- 运行后会返回所有符合条件的列,示例中会得到col2和col3
如果只需确认哪些列包含无穷值,而非直接筛选,可使用summarize()配合across()输出布尔结果:
df %>% summarize(across(everything(), ~ any(is.infinite(.x))))
执行后会生成一个单行数据框,每列对应原数据框的列,TRUE表示该列包含无穷值。
内容的提问来源于stack exchange,提问作者Bastián Olea Herrera
相关产品推荐
相关产品推荐

