2013-04-21 14 views
14

data.table'daki sütunlara nasıl izin veririm? Ben data.frame için yapabilir fakat data.table yöntemi geçersiz kılar: Bu değilHow does one reorder columns in R? için bir dupe olduğunuData.table sütunlarını nasıl yeniden düzenlerim?

> df <- data.frame(a=1:3,b=4:6) 
> df 
    a b 
1 1 4 
2 2 5 
3 3 6 
> df[c("b","a")] 
    b a 
1 4 1 
2 5 2 
3 6 3 
> dt <- as.data.table(df) 
> dt 
    a b 
1: 1 4 
2: 2 5 
3: 3 6 
> dt[c("b","a")] 
Error in `[.data.table`(dt, c("b", "a")) : 
    When i is a data.table (or character vector), x must be keyed (i.e. sorted, and, marked as sorted) so data.table knows which columns to join to and take advantage of x being sorted. Call setkey(x,...) first, see ?setkey. 
Calls: [ -> [.data.table 

Not.

+2

Aşağıdaki cevaplar çözümü sunar. [FAQ 2.1.7] (http://datatable.r-forge.r-project.org/datatable-faq.pdf) 'data.table' ve' data.frame' – mnel

cevap

25

Kullanım setcolorder:

> library(data.table) 
> dt <- data.table(a=1:3,b=4:6) 
> setcolorder(dt, c("b", "a")) 
> dt 
    b a 
1: 4 1 
2: 5 2 
3: 6 3 
1

Bu (orijinal tablo değiştirmeden) Eğer data.table bu işler nasıl geçerli:

dt[, list(b, a)] 

veya

dt[, c("b", "a"), with = F] 

veya

dt[, c(2, 1), with = F] 
+3

veya 'setcolorder (copy (dt), c ('b', 'a')) – mnel

İlgili konular