Como posso obter um quadro de dados com colunas removidas temporariamente por nome?

Por exemplo, com o conjunto de dadosmtcars

mtcars[ , "cyl"]

e

mtcars[ , 2]

ambos me dão a mesma coluna. Então, como posso obter tudo, mas a coluna 2 é assim:

mtcars[ , -2]

Eu não espero isso:

mtcars[ , -"cyl"]
Error in -"cyl" : invalid argument to unary operator

Em vez disso, o melhor que posso fazer é:

mtcars[ , !colnames(mtcars)=="cyl"]

Existe uma solução mais fácil?

EDIT: Parece lógico que, se as duas primeiras técnicas funcionarem, as duas primeiras técnicas também devem funcionar. Eu esperava que estivesse perdendo alguma coisa. As páginas de ajuda para?"[" ou?subset não explique esse resultado contra-intuitivo. Alguém sabe por que isso é?

questionAnswers(2)

yourAnswerToTheQuestion