删除列时保留列名称

时间:2013-02-14 19:52:26

标签: r

我创建了一个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)]"

当只有一列时,是否有人知道为什么不保留列名?

1 个答案:

答案 0 :(得分:2)

你被R FAQ咬了一口。将,drop = FALSE添加到您的数据框子集中(您会发现不再需要as.data.frame的副作用。)