2
我有一個數據集,其中有幾個變量只有一個唯一的觀察值(例如對於數據集中的每個觀測值,變量Language等於「英語」)。我試圖編寫一個函數,它自動找到任何這種性質的變量並將其從數據框中移除。下面的代碼有效,但我確信有一個更有效的方法來做到這一點。有任何想法嗎?如何刪除R中沒有多個不同觀察值的所有變量?
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)
真棒。所以sapply吐出一個邏輯向量,並使用子集括號來選擇只有邏輯爲「TRUE」的列。我嘗試了很多這樣的東西,但無法讓它起作用,但現在它在我的面前,我不敢相信我需要這方面的幫助。 – zap2008 2013-05-06 18:08:35
感謝您的額外解釋! – zap2008 2013-05-06 18:09:24
很高興幫助! R確實有一些棘手的問題。 – 2013-05-06 18:10:08