Вот быстрое решение для этого. Скажем, у вас есть кадр данных X с тремя столбцами A, B и C:
> X<-data.frame(A=c(1,2),B=c(3,4),C=c(5,6))
> X
A B C
1 1 3 5
2 2 4 6
Если я хочу удалить столбец, скажем B, просто используйте grep для colnames, чтобы получить индекс столбца, который вы можете использовать, чтобы опустить столбец.
> X<-X[,-grep("B",colnames(X))]
Ваш новый кадр данных X будет выглядеть следующим образом (на этот раз без столбца B):
> X
A C
1 1 5
2 2 6
Красота grep заключается в том, что вы можете указать несколько столбцов, которые соответствуют регулярному выражению. Если у меня есть X с пятью столбцами (A, B, C, D, E):
> X<-data.frame(A=c(1,2),B=c(3,4),C=c(5,6),D=c(7,8),E=c(9,10))
> X
A B C D E
1 1 3 5 7 9
2 2 4 6 8 10
Вынуть столбцы B и D:
> X<-X[,-grep("B|D",colnames(X))]
> X
A C E
1 1 5 9
2 2 6 10
EDIT: grepl предложение Мэтью Лундберга в комментариях ниже:
> X<-data.frame(A=c(1,2),B=c(3,4),C=c(5,6),D=c(7,8),E=c(9,10))
> X
A B C D E
1 1 3 5 7 9
2 2 4 6 8 10
> X<-X[,!grepl("B|D",colnames(X))]
> X
A C E
1 1 5 9
2 2 6 10
Если я попытаюсь удалить столбец, который не существует, ничего не должно произойти:
> X<-X[,!grepl("G",colnames(X))]
> X
A C E
1 1 5 9
2 2 6 10