2015-01-11 51 views
1

我有一个列表,我希望根据某个列表重新排序。使用在R中未硬编码的列名排序列表

如果我硬编码列名,我得到我想要的。

tab <- tab[ order(tab$inclass , tab$childage , tab$region, tab$line) , ] 

我想概括的代码,这样我可以使用不硬编码(我cuchars变量)列名和一个常数列线。

cuchars <- c('inclass','childage','region') 

我想什么是

tab2<- tab[ order(do.call(paste0,list('tab$',c(cuchars,'line'),collapse=', '))) , ] 

但删除所有数据,除了第一行。

这是怎么发生的?我如何修复代码? 谢谢!

回答

3

这里有一个办法:

tab[do.call(order, tab[c(cuchars, "line")]), ] 
+0

这似乎并没有被改变的顺序。如果我使用tab [order(c(cuchars,'line'))],那么顺序会改变,但是我失去了列表中的其余列。有没有办法保留所有的列并重新排序? – Elks

+0

@Elks代码应该工作。你能提供一个小的可重复的例子吗? –

+0

对不起,你是对的,它工作。我意外地期待着不同的事物。 – Elks