当所有值都缺失时如何使用 min?

How to use min when all values are missing?

我希望像这样保存一系列列的最小值:

  x1 x2 x3
  2  1  4 
  1  NA 3
  NA NA NA

使用这样的代码

min_val <- min(x1, x2, x3, na.rm=TRUE)

我想取回这个

  1
  1
  NA

但我一直遇到无限循环。我在下面包含了一些示例代码。我怎样才能让它告诉我第三行是 NA 而不是执行失败?

谢谢!

  x1 <- c(1,2,NA)
  x2 <- c(2,NA,NA)
  x3 <- c(3,5,NA)

  test <- cbind(x1, x2, x3)
  head(test)

  for (i in 1:nrow(test)){
    min_val[i] <- min(test[i,], na.rm = TRUE)
  }
  head(min_val)

这个怎么样:

min_val <- function(x) {
 apply(x, 1, function(x) if(all(is.na(x))) {NA} else {min(x, na.rm = T)}) 
}
min_val(test)
[1]  1  2 NA