Я пытаюсь заставить много моделей lm
работать в функции, и мне нужно автоматически отбрасывать постоянные столбцы из моей таблицы данных. Таким образом, я хочу сохранить только столбцы с двумя или более уникальными значениями, исключая NA
из count.
Я попробовал несколько методов, найденных в SO, но я все еще не могу удалить столбцы, которые имеют два значения: константу и NA.
Мой воспроизводимый код:
library(data.table)
df <- data.table(x=c(1,2,3,NA,5), y=c(1,1,NA,NA,NA),z=c(NA,NA,NA,NA,NA),
d=c(2,2,2,2,2))
> df
x y z d
1: 1 1 NA 2
2: 2 1 NA 2
3: 3 NA NA 2
4: NA NA NA 2
5: 5 NA NA 2
Мое намерение состоит в том, чтобы удалить столбцы y, z и d, поскольку они являются константами, включая y, которые имеют только одно уникальное значение, когда NA
опущены.
Я пробовал это:
same <- sapply(df, function(.col){ all(is.na(.col)) || all(.col[1L] == .col)})
df1 <- df[ , !same, with = FALSE]
> df1
x y
1: 1 1
2: 2 1
3: 3 NA
4: NA NA
5: 5 NA
Как видно, 'y' все еще существует... Любая помощь?