gpt4 book ai didi

r - 将 which.min() 与 apply() 一起使用时如何保留 NA 值?

转载 作者:行者123 更新时间:2023-12-05 09:23:20 25 4
gpt4 key购买 nike

假设我有一个数据框,其中一些整列都是 NA,如下所示:

set.seed(0)
data <- data.frame(A = rnorm(10, 10, 1),
B = rnorm(10, 12, 2),
C = rep(NA, 10))

如果我对列应用 min(),我会得到我希望的输出:

apply(data, 2, min)
# A B C
# 8.460050 9.524923 NA

但是,当我应用 which.min() 时,我的输出是一个列表,C 列给出 integer(0) :

apply(data, 2, which.min)
# $A
# [1] 6
# $B
# [1] 10
# $C
# integer(0)

我可以通过这个相当丑陋的解决方法让它看起来像我想要的样子:

which.mins <- unlist(apply(data, 2, which.min))
which.mins[names(data)[!(names(data) %in% names(which.mins))]] <- NA
which.mins
# A B C
# 6 10 NA

有没有更好的方法来做到这一点,模拟我在使用 apply()min() 时得到的输出?

最佳答案

你是对的,如果 x 没有非 NA,which.min 返回 0。您仍然可以像这样使用 applywhich.min:

apply(data, 2, function(x) {if (all(is.na(x))) {NA}  else {which.min(x)} }) 

关于r - 将 which.min() 与 apply() 一起使用时如何保留 NA 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22362561/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com