У меня есть ситуация, когда apply
возвращает список со многими NULL
записями. Код, который я использую, довольно длинный, поэтому я воспроизвожу проблему на простом примере.
# Generate data.
df <- data.frame(a= c(1,2, NA, 6),
b= c(1, 7, 3, 7))
# Return only columns that have NAs.
my_list <- apply(df, 2, function(col_i){
if(any(is.na(col_i))){
return(col_i)
}})
Выполнение этого дает нам
my_list
$a
[1] 1 2 NA 6
$b
NULL
Моя проблема в том, что я получаю много Null
записи, так что я не могу работать с результатами. Как можно (а) избежать подачи заявки на возврат NULL
записей или (б) отменить все NULL
записи в my_list
?
Таким образом, ожидаемый результат будет
my_list
$a
[1] 1 2 NA 6
Опять же, реальный код, который я использую, более сложен, чем этот. Поэтому, пожалуйста, не предлагайте использовать что-то вроде df[ , !complete.cases(t(df)), drop= FALSE]
, которое также возвращает столбцы, которые содержат пропуски. Мой вопрос не о том, как получить столбцы с пропусками, а о том, как обрабатывать NULL
записей в apply
. Я хочу оставить часть if
внутри apply
.