2011-10-03 66 views
1

也许这是一个简单的问题,但我试图更改R中数据框中列的位置。我有这个数据框使用R中的标签txt列表更改数据框中的列位置

TargetID 1065197 1005204  97610 1011789 101075 1002206 
cg00000029 0.4192448 0.4177188 0.4797760 0.4214448 0.5500357 0.5535228 
cg00000108 0.9191919 0.9358317 0.9428818 0.9397804 0.9293985 0.9495835 
cg00000109 0.8935743 0.9157031 0.8731022 0.8734130 0.9226335 0.8980497 
cg00000165 0.1387203 0.1699675 0.2031603 0.1683728 0.1822674 0.1623122 
cg00000236 0.7502784 0.7324294 0.7895553 0.7096000 0.7878484 0.7747281 
cg00000289 0.5698198 0.5864769 0.6527094 0.5058923 0.6033058 0.6524675 

而且我想用这个表格的文本文件,它表示每对列,以便

101075 1005204 
97610 1002206 
1011789 1065197 

那么其结果必然是这样的

colnames(reordered_data_frame) 
TargetID 101075 1005204 97610 1002206 1011789 1065197 
重新排列位置

有什么建议吗?

回答

2

如果你有列名的载体,从而,说:

colorder=c(101075, 1005204, 97610, 1002206,1011789 ,1065197) 

您可以重新排序使用(假设你的数据框被命名为DAT)的列:

newDf <- dat[, c("TargetID", colorder)] 

通常情况下,你需要在着色器上调用as.character()(因为列名是数字),但是当我们连接“TargetID”文本时,矢量c("TargetID", colorder)被转换为字符。一般来说,使用数字作为列名不是最好的办法。

0

读列从文本​​文件名命名为“columns.txt

cols <- scan("columns.txt","character") 

重新排列数据

redf <- dat[,c("TargetID",cols)]