Menemukan indeks kolom dengan namanya di R [ditutup]


11

Dalam bingkai data, saya ingin mendapatkan indeks kolom dengan nama. Sebagai contoh:

x <- data.frame(foo=c('a','b','c'),bar=c(4,5,6),quux=c(4,5,6))

Saya ingin tahu indeks kolom untuk "bar".

Saya datang dengan yang berikut tetapi tampaknya tidak memenuhi syarat. Apakah ada built-in lebih mudah bahwa saya hilang?

seq(1,length(names(x)))[names(x) == "bar"]
[1] 2

3
match("bar",names(x))juga berfungsi, meskipun matchjauh lebih berguna ketika argumen pertama juga merupakan vektor.
kardinal

Apakah Anda benar-benar membutuhkan indeks kolom? Anda juga dapat menggunakan x [, "bilah"] untuk mendapatkan seluruh kolom, mirip dengan bilah x $ biasa . Dan dalam kedua kasus, subskripsi baris: x [2: 3, "bar"] atau x $ bar [2: 3]. Jika Anda perlu memasukkan indeks ke rutin yang memerlukan indeks, tentu saja itu tidak membantu.
Wayne

Bah, itu terus mengacaukan tanda dolar saya. Intinya adalah bahwa ada dua cara untuk menggunakan nama kolom metode tanda dolar dan memasukkannya sebagai subskrip.
Wayne

3
Pertanyaan ini tampaknya di luar topik karena ini adalah tentang bagaimana melakukan sesuatu di R, & bukan tentang masalah statistik terkait.
gung - Reinstate Monica

Jawaban:


21

mungkin ini adalah cara paling sederhana:

which(names(x)=="bar")

11

hanya untuk menambahkan kemungkinan lain:
Anda biasanya dapat menggunakan grepdan itu decedents (yaitu, grepl, untuk melakukan pekerjaan semacam ini dengan cara yang lebih canggih menggunakan ekspresi reguler.

Pada contoh Anda, Anda bisa mendapatkan indeks kolom dengan:

grep("^bar$", colnames(x)) atau grep("^bar$", names(x))

The ^dan $yang meta karakter untuk awal dan akhir dari string, masing-masing.

Periksa? Grep dan terutama? Regex untuk info lebih lanjut (yaitu, Anda hanya dapat mengambil sebagian nama / kecocokan, atau nilai pengembaliannya adalah string itu sendiri atau vektor logis, ...)

Bagi saya, greplebih R-ish.

Sangat terkait adalah paket terbaru oleh Hadley Wickhem: stringr , Paket untuk "pemrosesan string modern, konsisten" termasuk fungsi grep like. Dia baru-baru ini menerbitkan makalah tentang itu di R Journal

Lihat juga jawaban saya di stackoverflow pada masalah yang sama.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.