我有两个共享相同列名的文件s
和df.iso
。我想对s
文件进行排序,以使列与df.iso
文件的顺序相同。下面显示的两个文件的一部分(列数比显示的多得多)
> head(s)
100G 100R 106G 106R 122G 122R 124G 124R 126G 126R
Cal01 64982 40617 16687 34169 60261 62723 20196 55175 46234 11648
Cal02 23241 19762 8237 27298 22358 24350 14503 23792 20989 6514
Cal03 377255 317826 101387 254313 330619 394603 168218 311727 275783 99379
Cal04 35172 30102 10305 39377 33148 34551 15897 34986 24039 7224
Cal05 208 271 104 150 287 185 154 347 180 33
Cal06 1588672 1386207 443956 1119972 1533890 1784794 571805 1368031 1257916 451750
> head(df.iso)
185R 68G 60G 134G 124R 279R 126G 26R 73G 192G 100R
hsa-let-7a-3p_ATACAATCTACTGTCTTTCCT 1 6 1 2 2 1 2 2 1 1 1
hsa-let-7a-3p_ATATACAATCTACTGTCTTT 1 0 1 1 4 0 0 1 1 0 2
hsa-let-7a-3p_ATATACAATCTACTGTCTTTC 4 5 2 12 4 1 2 3 4 2 4
hsa-let-7a-3p_ATATACAATCTACTGTCTTTCC 7 5 2 6 3 2 2 2 1 1 2
hsa-let-7a-3p_ATATACAATCTACTGTCTTTCT 15 6 14 49 32 7 20 20 8 13 22
hsa-let-7a-3p_CCATACAATCTACTGTCTTTCT 4 1 1 0 0 1 1 0 3 2 1
答案 0 :(得分:5)
如果两个data.frames(不是文件)具有相同的列,则可以
xy1 <- data.frame(a = 1:3, b = runif(3), c = rnorm(3))
xy2 <- data.frame(c = rnorm(3), a = 1:3, b = runif(3))
xy2
c a b
1 -0.7573781 1 0.9564583
2 0.3513074 2 0.9837766
3 1.6455091 3 0.9433857
xy2[, names(xy1)]
a b c
1 1 0.9564583 -0.7573781
2 2 0.9837766 0.3513074
3 3 0.9433857 1.6455091
答案 1 :(得分:1)
我假设你从已经从文件中读入R的数据帧开始。如果它们的列名完全相同,一种简单的方法是按列名重新排序:
s = s[ , order(colnames(s))]
df.iso = df.iso[ , order(colnames(df.iso))]
然后您可以将这些文件写入文件。对列名进行排序可使数据框更易于比较,并且还具有使数据框或文件中的任何给定列名更容易找到的附加好处。