也许这是一个简单的问题,但我正在尝试更改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
有什么想法吗?
答案 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)]