Скажем, у меня есть фрейм данных, в котором целые столбцы имеют 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()
?