使用R中的制表符txt列表更改数据框中的列位置

时间:2011-10-03 15:55:47

标签: r dataframe

也许这是一个简单的问题,但我正在尝试更改R中数据框中列的位置。我有这个数据框

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 个答案:

答案 0 :(得分:2)

如果您有一个列名称向量,请说:

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

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

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

通常,您需要在着色器上调用as.character()(因为列名是数字),但是当我们连接“TargetID”文本时,向量c("TargetID", colorder)将转换为字符。但是,一般而言,使用数字作为列名称并不是最佳选择。

答案 1 :(得分:0)

从名为“columns.txt

的文本文件中读取列名称
cols <- scan("columns.txt","character")

重新排列数据

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