使用R从数据框中删除列

时间:2014-08-06 09:42:03

标签: r

我正在尝试从数据框中删除列,其中名称存在于数组中,例如x。

a <- data.frame( ab = 1:3, ac = 4:6, ad = 7:9, ae = 10:12, af = 13:15, ag=c("a", "b", "c"))

x <- c("ac", "ad", "ae")

在这里,我想删除数据框a中的列,其名称存在于数组x中。

我曾尝试过但却徒劳无功:

for (i in 1:length(x))
{
 y <- a[, -grep(x[i],colnames(a))]
}

任何人都可以在这方面帮助我吗?

此致

曼迪

2 个答案:

答案 0 :(得分:4)

最简单的解决方案是

newA = a[,setdiff(colnames(a),x)]

答案 1 :(得分:3)

如果您想从data.frame破坏性地删除它们,可以使用list(NULL),如下所示:

a
#   ab ac ad ae af ag
# 1  1  4  7 10 13  a
# 2  2  5  8 11 14  b
# 3  3  6  9 12 15  c

a[x] <- list(NULL)
a
#   ab af ag
# 1  1 13  a
# 2  2 14  b
# 3  3 15  c