2009-10-08 6 views
6

나는 이것을 할 수있는 더 좋은 방법이있을 것이라고 생각합니다.미확인 된 열을 무시하면서 데이터 프레임 열 재정렬

데이터 프레임의 열을 재정렬하려고합니다. 나는 새로운 주문을 나타내는 ordered.colnames리스트를 갖고 있지만, 일부 컬럼은 존재하지 않는다.dataset이다. 오류 "undefined columns selected"을 피하기 위해 try() 함수에서 관련 슬라이스를 래핑했습니다.

다음 방법이 효과가 있지만 더 좋은 방법이 있습니까?

> ordered.colnames[1:5] 
[1] "lady_22102"   "attentions_83249" "perseverance_17864" 
[4] "cecil_84477"  "cecilia_133476" 

dataset.reordered = c() 
for (i in 1:length(ordered.colnames)) { 
    col = NA 
    col = try(cbind(dataset[,ordered.colnames[i]]),silent=TRUE) 
    if (!inherits(col,"try-error")) { 
     colnames(col) = ordered.colnames[i] 
     dataset.reordered = cbind(dataset.reordered, col) 
    } 
} 

답변

13

그냥 할 수 없습니까?

ordered.colnames <- ordered.colnames[ordered.colnames %in% colnames(dataset)] 
+0

작동합니다. 내가 그걸 생각하지 않았다는 것을 믿을 수 없어 .. 고마워. – ariddell

+0

교차 참조 – hadley