2009-10-08 10 views
6

Tôi đang nghĩ rằng phải có cách tốt hơn để thực hiện việc này.Sắp xếp lại các cột dữ liệu trong khi bỏ qua các cột không xác định

Tôi đang cố gắng sắp xếp lại các cột trong một khung dữ liệu. Tôi có một danh sách, ordered.colnames, đại diện cho đơn đặt hàng mới - nhưng một số cột không tồn tại trong dataset. Để tránh lỗi "undefined columns selected", tôi đã gói phần cắt có liên quan vào hàm try().

Phương pháp sau đây hoạt động, nhưng có cách nào tốt hơn để thực hiện việc này không?

> 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) 
    } 
} 

Trả lời

13

Bạn không thể làm điều này?

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

Điều đó có hiệu quả. Không thể tin rằng tôi đã không nghĩ về điều đó .. Cảm ơn. – ariddell

+0

Cũng thấy giao nhau – hadley