我有一个包含几个变量的数据集,这些变量只有一个唯一的观察值(例如,对于数据集中的每个观察值,变量语言等于“英语”)。我试图编写一个函数来自动查找这种性质的任何变量并将其从数据框中删除。以下代码有效,但我确信有一种更有效的方法。有任何想法吗?
test.df <- data.frame(var1=rep("a",5), var2=c(rep("a",3),rep("b",2)),
var3=1:5, var4=rep(0,5))
remove.repeat.vars <- function(data) {
one.level.factors <- sapply(data, function(x) ifelse(length(unique(x)) < 2, 1, 0))
one.level.factors <- names(one.level.factors[which(one.level.factors == 1)])
return (data[,-which(names(data) %in% one.level.factors)])
}
remove.repeat.vars(test.df)