chỉ để thêm một khả năng khác:
Bạn thường có thể sử dụng grepvà đó là những người đã mất (tức là grepl, để thực hiện các loại công việc này theo cách tinh vi hơn bằng cách sử dụng các biểu thức thông thường.
Trong ví dụ của bạn, bạn có thể lấy chỉ mục cột với:
grep("^bar$", colnames(x)) hoặc là grep("^bar$", names(x))
Các ^và $là các ký tự meta cho đầu và cuối của một chuỗi, tương ứng.
Kiểm tra? Grep và đặc biệt là? Regex để biết thêm thông tin (nghĩa là bạn chỉ có thể lấy một phần tên / kết hợp hoặc giá trị trả về là chính chuỗi hoặc vectơ logic, ...)
Đối với tôi, greplà R-ish nhiều hơn.
Liên quan chặt chẽ là gói gần đây của Hadley Wickhem: stringr , Gói dành cho "xử lý chuỗi nhất quán, hiện đại" bao gồm các hàm giống như grep. Gần đây ông đã xuất bản một bài báo về nó trên Tạp chí R.
Xem thêm câu trả lời của tôi về stackoverflow về một vấn đề giống hệt nhau.
match("bar",names(x))cũng hoạt động, mặc dùmatchhữu ích hơn nhiều khi đối số đầu tiên cũng là một vectơ.