我有一个包含300列数据的数据框。
我创建了一个包含126个元素的 vector ,这些元素是300中126的列名。
我想基于不在我的126中来对300进行子集化。它们的顺序不正确,因此我不能简单地通过指定-1:-126来删除。

我用grep和matrix操作尝试了各种方法,但是它们没有用。如以下哪个没有用。 x有300列。 f包含我要从x1中排除的126个列名的 vector 。

x1<-x[,-which(names(x), %in% f)]

如果我明确使用一个或多个变量名,则可以使用它,但是我不想在f中键入126个元素。

最佳答案

使用%in%:

names.use <- names(df)[!(names(df) %in% f)]

然后names.use将包含您名称f的 vector 中未包含的所有列的名称。

要使用所需的列对数据框进行子集化,可以使用以下方法:
df.subset <- df[, names.use]

07-27 20:01