2013-02-14 42 views
1

我已经创建了一个R脚本,用于计算数据框每列中缺失值的百分比,然后删除超过预设阈值的列。需要维护列名需要删除列时保留列名

当列删除后数据框中存在多个列时,名称将保留,但只有一列时不会存在。

时列名称保持不变

df <- data.frame(A=rnorm(10, 10, 1), B=rep(NA, 10), C=rnorm(10, 10, 1)) 
threshold <- 80 
pmiss <- function(x) { 
ifelse(sum(is.na(x))/length(x)*100 > threshold, TRUE, FALSE) 
} 

temp <- sapply(df, pmiss) 
deletecols <- names(temp[temp==TRUE]) 
df <- as.data.frame(df[,!(names(df) %in% deletecols)]) 

names(df) #prints 
[1] "A" "C" 

但是代码,定义DF为

df <- data.frame(A=rnorm(10, 10, 1), B=rep(NA, 10)) 

names(df) #prints 
[1] "df[, !(names(df) %in% deletecols)]" 

有谁知道为什么列名时不保留只有一列?

回答

2

你被R FAQ咬了。将,drop = FALSE添加到您的数据帧子集(并注意到您不再需要的副作用as.data.frame。)

+0

谢谢!猜猜还有很多我仍需要了解R! – obug 2013-02-14 20:07:50