我正在尝试从数据框中删除列,其中名称存在于数组中,例如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))]
}
任何人都可以在这方面帮助我吗?
此致
曼迪
答案 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