查找数据框r中多个列的最小非零值



我试图找到我的数据集中使用这个for循环的最低非零值:

smallest_nonzero_values <- c()
for (i in 1:length(colnames(df))){
i <- 1
column <- df[,i]
column <- column[column!=0]
smallest_nonzero_values[i] <- min(column)
}

代码工作,但不知何故,它没有循环遍历所有列,并停止在col 1,只是给我输出:Inf.

我对R很陌生,知道不推荐for循环,但我不知道在查看多个列时如何找到它。谢谢!

您可以将0设置为NA,然后计算忽略NAs的min:

library(tidyverse)
tribble(
~x, ~y, ~z,
20, 0, 1,
0, NA, 0,
40, 20, 0,
10, 30, NA,
) |> 
mutate(across(everything(), ~ if_else(. == 0, NA_real_, .))) |> 
summarise(across(everything(), ~ min(., na.rm = TRUE)))
#> # A tibble: 1 × 3
#>       x     y     z
#>   <dbl> <dbl> <dbl>
#> 1    10    20     1

由reprex包(v2.0.1)创建于2022-06-14

相关内容

  • 没有找到相关文章

最新更新