如何根据另一个向量的值删除R中数据框中的列?

问题描述

我有一个向量中的值列表,我想用它来删除数据帧中的列。

例如,如果我的数据框中有A,B,C,D,E,F,G,H列

我的向量的值为C,E,H

我希望数据框具有列

A,B,D,F,G,

解决方法

有不同的选择。如果要从原始数据集中删除,则快速分配为NULL

df1[vecofnames] <- NULL

如果我们想将其子集化为另一个对象,则为另一种选择

df2 <- df1[setdiff(names(df1),vecofnames)]

或与subset

df2 <- subset(df1,select = -vecofnames)

或者在dplyr

library(dplyr)
df2 <- df1 %>%
         select(-vecofnames)