2012-01-05 2 views
1

Можно создать дубликат:
Drop Columns R Data frameР: Unselect матрица или data.frame столбцов по имени

Предполагая, что матрица с 3-х названных колонках "А", "В", С», Я могу отменить столбцы "B" и "C", как это:

df[, -c(2, 3)] 

Но что, если я хочу использовать имена столбцов Как Df [-C ("B", "C")]?

+0

Согласны, что это дубликат. Комментарий: стратегия -grep() более общая. –

ответ

2

Matching ваш друг:

R> DF <- data.frame(A=1:2, B=2:3, C=3:4) 
R> DF[, !(colnames(DF) %in% c("B","C")), drop=FALSE] 
    A 
1 1 
2 2 
R> 

Ключ в том, что вам нужно булевы векторы для индексации (или иное, числовые индексы). Таким образом, любое выражение, создающее логические значения, будет работать.

+0

Спасибо, намного сложнее, чем оператор :( –

+0

Так что просто определите новый оператор или функцию «-» (или). –

+1

Хорошее предложение, но потом я не понимаю, почему он еще не определен. Почему только для индексов ? В конце концов, я все еще могу использовать имена столбцов для выбора столбцов: DF [, c («A», «B»)] –

Смежные вопросы