R에서 이름으로 열 인덱스 찾기 [닫기]


11

데이터 프레임에서 열의 색인을 이름별로 가져 오려고합니다. 예를 들면 다음과 같습니다.

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

"bar"에 대한 열 인덱스를 알고 싶습니다.

나는 다음을 생각해 냈지만 우아하지 않은 것 같습니다. 내가 놓친 더 간단한 내장이 있습니까?

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

3
match("bar",names(x))match첫 번째 인수가 벡터 일 때 훨씬 유용 하지만 작동합니다 .
추기경

실제로 열의 인덱스가 필요합니까? x [, "bar"]를 사용하여 일반적인 x $ bar 와 유사하게 전체 열을 가져올 수도 있습니다 . 두 경우 모두 x [2 : 3, "bar"] 또는 x $ bar [2 : 3] 의 행을 아래 첨자로 지정하십시오 . 인덱스가 필요한 루틴에 인덱스를 공급 해야하는 경우 물론 도움이되지 않습니다.
Wayne

바, 내 달러 표시가 계속 엉망 이네 결론은 열 이름을 달러 기호 방법으로 사용하고 첨자로 포함시키는 두 가지 방법이 있다는 것입니다.
Wayne

3
이 질문은 관련 통계 문제가 아니라 R에서 무언가를 수행하는 방법에 관한 것이므로 주제가 아닌 것 같습니다.
gung-모니 티 복원

답변:


22

아마도 이것이 가장 간단한 방법 일 것입니다.

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

11

또 다른 가능성을 추가하기 위해 :
일반적으로 사용할 수 있으며 grep정규 표현식을 사용하여보다 정교하게 이러한 종류의 작업을 수행하는 것이 중요합니다 (예 : grepl).

귀하의 예에서 다음을 사용하여 열 색인을 얻을 수 있습니다.

grep("^bar$", colnames(x)) 또는 grep("^bar$", names(x))

^와는 $각각 문자열의 시작과 끝 메타 문자입니다.

자세한 정보는 "grep", 특히 "regex"를 확인하십시오 (즉, 부분 이름 / 일치 만 잡을 수 있거나 반환 값은 문자열 자체 또는 논리 벡터입니다 ...).

나를 위해, grep더 R-ish입니다.

Hadley Wickhem의 최신 패키지 : stringr , grep와 같은 기능을 포함하여 "현대적이고 일관된 문자열 처리"를위한 패키지와 밀접한 관련이 있습니다. 그는 최근 R 저널에 논문을 발표 했습니다.

동일한 문제에 대한 stackoverflow에 대한 답변도 참조하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.