Znajdowanie indeksu kolumny według jego nazwy w R [zamknięte]


11

W ramce danych chciałbym uzyskać indeks kolumny według nazwy. Na przykład:

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

Chcę poznać indeks kolumny dla „paska”.

Wymyśliłem następujące, ale wydaje się to nieeleganckie. Czy brakuje mi prostszego wbudowanego interfejsu, którego mi brakuje?

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

3
match("bar",names(x))działa również, chociaż matchjest znacznie bardziej użyteczny, gdy pierwszy argument jest również wektorem.
— kardynał

Czy rzeczywiście potrzebujesz indeksu kolumny? Możesz także użyć x [, „bar”], aby uzyskać całą kolumnę, podobnie jak zwykły pasek x $ . W obu przypadkach subskrybuj wiersze: x [2: 3, „bar”] lub x $ bar [2: 3]. Jeśli potrzebujesz wprowadzić indeks do procedury, która wymaga indeksu, to oczywiście nie jest pomocne.
— Wayne,

Bah, ciągle psuje moje znaki dolara. Najważniejsze jest to, że istnieją dwa sposoby użycia nazwy kolumny jako metody znaku dolara i włączenia jej jako indeksu dolnego.
— Wayne

3
To pytanie wydaje się być nie na temat, ponieważ dotyczy sposobu zrobienia czegoś w języku R, a nie jakichkolwiek powiązanych problemów statystycznych.
— gung - Przywróć Monikę

Odpowiedzi:


22

prawdopodobnie jest to najprostszy sposób:

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

11

żeby dodać kolejną możliwość:
zwykle możesz użyć grepi jest to przyzwoite (tj. grepl, aby wykonywać tego rodzaju zadania w bardziej wyrafinowany sposób przy użyciu wyrażeń regularnych.

Na twoim przykładzie możesz uzyskać indeks kolumny z:

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

Znakami ^i $są odpowiednio meta znaki na początku i na końcu łańcucha.

Sprawdź? Grep, a zwłaszcza? Regex, aby uzyskać więcej informacji (tzn. Możesz pobrać tylko częściowe nazwy / dopasowania, lub zwracaną wartością jest sam ciąg znaków lub wektor logiczny, ...)

Dla mnie grepjest bardziej R-ish.

Silnie powiązany jest najnowszy pakiet Hadleya Wickhem: stringr , pakiet do „nowoczesnego, spójnego przetwarzania łańcucha”, w tym funkcje podobne do grep. Niedawno opublikował artykuł na ten temat w R Journal.

Zobacz także moją odpowiedź na temat nakładania stosu na identyczny problem.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.