2014-01-02 3 views
1

Я хочу заказать столбцы таблицы. Мои данные выглядит следующим образом (у меня есть 50 образцов и 150 строк в полной таблице):Стол заказов в таблице

> histo 

CD6 CD1 CD12 
Actinomyces 0.03196031 0.066683743 0.04563851 
Atopobium 0.01869159 0.003244536 0.00447774 
Streptococcus 0.23355000 0.452131300 0.15800000 
Veillonella 0.72330000 0.416600000 0.15000000 
Enterococcus 0.41223300 0.755200000 0.17400000 

Я попытался это:

> library(data.table) 
> df <- read.table(file="histo.txt", row.names=1, header=T, sep="") 
> setcolorder(df, c("CD1", "CD6", "CD12")) 

Но я получил эту ошибку:

Error in setcolorder(df, c("CD1", "CD6", "CD12")) : x is not a data.table

Кто-нибудь знает, как я могу это сделать?

+4

использовать 'data.table :: fread' вместо' read.table' (последний, смутно, создает рамку ** данных **, а не таблицу данных). См. Также 'plyr :: arr'. –

ответ

3

Несколько способов сделать это.

df <- df[c("CD1", "CD6", "CD12")] # no need for data tables 

dt <- data.table(df)     # as per @BenBolker 
setcolorder(dt,c("CD1", "CD6", "CD12")) 

Разница заключается в том, что с таблицами данных вы не копируете результат, вы просто перемещаете строки вокруг. Это быстрее с действительно большими таблицами, но не значительными в вашем случае.

Смежные вопросы