apenas para adicionar outra possibilidade:
você geralmente pode usar grepe seus falecidos (por exemplo, grepl, realizar esse tipo de trabalho de maneira mais sofisticada, usando expressões regulares.
No seu exemplo, você pode obter o índice da coluna com:
grep("^bar$", colnames(x)) ou grep("^bar$", names(x))
o ^ e $são meta caracteres para o início e o fim de uma sequência, respectivamente.
Verifique? Grep e especialmente? Regex para obter mais informações (por exemplo, você pode obter apenas nomes / correspondências parciais, ou o valor de retorno é a própria string ou um vetor lógico, ...)
Para mim, grep é mais R-ish.
Fortemente relacionado é o pacote recente de Hadley Wickhem: stringr , Um pacote para "processamento de string consistente e moderno", incluindo funções do tipo grep. Ele publicou recentemente um artigo sobre isso no R Journal.
Veja também minha resposta sobre stackoverflow em um problema idêntico.
match("bar",names(x))também funciona, emboramatchseja muito mais útil quando o primeiro argumento também é um vetor.