我试图找到我的数据集中使用这个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