R에는 중요한 개체의 목록이 있습니다 (R은 순서를 정의 할 수 있어야한다는 스칼라와 같은 단순한 개체가 아닙니다). 목록을 정렬하고 싶습니다. 대부분의 언어는 프로그래머가 정렬 함수에 전달되는 한 쌍의 목록 요소를 비교하는 함수 또는 유사한 함수를 제공 할 수 있도록합니다. 내 목록을 어떻게 정렬합니까?R에있는 중요하지 않은 요소의 목록 정렬 R
답변
이 작업을 간단하게 만들려면 개체가 이름과 값의 두 요소로 구성된 목록이라고 말하면됩니다. 값은 숫자입니다. 그것이 우리가 정렬하고자하는 것입니다. 더 많은 요소가 있고 더 복잡한 것을 처리해야 할 필요가 있다고 생각할 수 있습니다.
sort
도움말 페이지에서 sort
은 xtfrm
을 사용합니다. xtfrm
은 x[i]
클래스에 대해 ==
및 >
메서드를 사용한다고 알려줍니다.
먼저 내가 정렬 할 객체 정의 할 것이다 다음 x[i]
년대에 xtfrm
작품부터 지금
xx <- lapply(c(3,5,7,2,4), function(i) list(name=LETTERS[i], value=i))
class(xx) <- "myobj"
을, 내가 원하는 요소를 여전히 가진 반환하는 [
함수를 정의 할 필요가
`[.myobj` <- function(x, i) {
class(x) <- "list"
structure(x[i], class="myobj")
}
지금 우리가 myobj
클래스 ==
및 >
기능을 필요
myobj
을 전달할 것임을 알기 때문에 첫 번째 요소를 사용하여 관계를 정의합니다.
`>.myobj` <- function(e1, e2) {
e1[[1]]$value > e2[[1]]$value
}
`==.myobj` <- function(e1, e2) {
e1[[1]]$value == e2[[1]]$value
}
이제 sort
이 작동합니다.
sort(xx)
전체 Ops
함수를 작성하는 것이 더 적절할 수 있습니다. 그러나, 그냥 정렬하려면, 이것은 당신이 필요로하는 모든 것으로 보인다. S3 스타일을 사용하여이 작업을 수행하는 방법에 대한 자세한 내용은 Venables/Ripley의 p.89-90을 참조하십시오. 또한 객체에 대해 xtfrm
함수를 쉽게 작성할 수 있다면 더 간단하고 가능성이 더 빠릅니다.
감사합니다. Aaron. 환상적인 대답. – Chris
정규 R 비트로 생성 할 수있는 것보다 덜 일반적인 솔루션을 만드는 많은 작업이 있습니다. 다음은 'order'정렬의 두 가지 용도입니다. xx [order (as.character (sapply (xx, [ ","value "))]]'를 호출 한 다음, 이름에'xx [order (as.문자 (sapply (xx, "[", "name"))]] 클래스 메서드에 대한 참조없이. –
@DWin은 절대적으로 옳습니다. 더 똑똑한 것을 할 수 있다면,해야합니다! – Aaron
order
함수를 사용하면 문자 또는 숫자 인수에 대한 정렬 순서를 결정하고 후속 인수로 구분할 수 있습니다. 당신은 당신이 원하는 것에 대해 더 구체적이어야합니다. "사소한 객체"의 예를 생성하고 일부 R 객체에서 원하는 순서를 지정하십시오. 목록 아마 대부분의 비의 vectorial 개체 :
> slist <- list(cc=list(rr=1), bb=list(ee=2, yy=7), zz="ww")
> slist[order(names(slist))] # alpha order on names()
$bb
$bb$ee
[1] 2
$bb$yy
[1] 7
$cc
$cc$rr
[1] 1
$zz
[1] "ww"
slist[c("zz", "bb", "cc")] # an arbitrary ordering
$zz
[1] "ww"
$bb
$bb$ee
[1] 2
$bb$yy
[1] 7
$cc
$cc$rr
[1] 1
하나의 옵션은 객체의 xtfrm
방법을 만드는 것입니다. order
과 같은 기능은 경우에 따라 작동하는 여러 열을 사용합니다. gtools
패키지에 특정 케이스 (예 : mixedsort
)와 같은 특수 기능이 있습니다.
- 1. 속성이 중요하지 않은 초기화를 수행해야합니까?
- 2. 중요하지 않은 결함은 무엇이며이를 극복하는 방법은 무엇입니까?
- 3. 나는이 같은보기 (중요하지 않은 물건을 왼쪽으로)가보기
- 4. HTML에서 중요하지 않은 공백을 제거하는 방법
- 5. MySQL 데이터베이스에서 중요하지 않은 객체 가져 오기
- 6. R에있는 주석 주석 규칙
- 7. R 목록 행 이름
- 8. 목록 요소의 일반 클래스
- 9. R에있는 Instring 기능
- 10. 목록 목록에서 목록 정렬 F #
- 11. 확장 목록 정렬 스크립트
- 12. 매트릭스 입력으로 도트 차트 정렬 R
- 13. R : 목록 내부에 함수 적용
- 14. 선택 정렬 - 배열 목록
- 15. 정렬 할 수있는 가장 좋은 방법으로 정렬되지 않은 가로 목록
- 16. 정렬되지 않은 목록의 여러 줄 목록 항목의 가로 가운데 정렬
- 17. R 질문. Unexplainably 빈 요소의 조합 응답
- 18. 벡터에서 요소의 색인을 찾는 R 함수가 있습니까?
- 19. erlang 및 함수 프로그래밍에 대한 중요하지 않은 질문
- 20. 데이터 복구가 중요하지 않은 경우 트랜잭션 로그 백업
- 21. 정규 expr이 필요합니다. 속성의 순서가 중요하지 않은 html 요소
- 22. svn : 이름이 중요하지 않은 경우 태그의 기본 이름은 무엇입니까?
- 23. IronPython 및 Silverlight를 사용하여 작성된 중요하지 않은 사이트의 이름을 지정하십시오.
- 24. 중요하지 않은 데이터에 대해 MySQL에서 쓰기 I/O 줄이기?
- 25. 가치와 정장이 중요하지 않은 카드 갑판에서 그림 그리기 방법?
- 26. 중요하지 않은 Grails에 대한 잠금 해제/GORM 도메인 클래스
- 27. 여러 asp.net MVC 페이지를 유지하는 적절한 방법 (중요하지 않은) 상태입니다.
- 28. 처리되지 않은 예외가 정렬
- 29. 위치 목록 정렬
- 30. Java로 점 목록 정렬
다른 사람들이 당신이 말하는 것에 대한 생각을 갖도록하기 위해 중요하지 않은 요소 목록의 스 니펫을 제공 할 수 있습니까? 여기서 재현 할 수있는 질문을 쓰는 방법에 대한 팁 : http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – Chase