如何根据数字数组重新排列数据帧行

时间:2017-04-27 05:00:15

标签: r dataframe

x是一个数据框。

> x
     TCGA-05-4244-01A-01D-1105-08
TGTT                            1
TGTG                            2
TGCG                            2
TGGA                            1
TCCG                            1
TCAG                            2

如何根据数字数组重新排列x。如 match <- c(1, 3, 2, 6, 5, 4) x的结果应为

> x
     TCGA-05-4244-01A-01D-1105-08
TGTT                            1
TGCG                            2
TGTG                            2
TCAG                            2
TCCG                            1
TGGA                            1

我使用了x <- x[match,],但它没有用。

2 个答案:

答案 0 :(得分:1)

我相信你正在处理&#34; drop&#34;问题。当R读取只有一列的矩阵时,第二维(列)会被删除。&#34;这可以通过添加一个简单的&#34; drop = FALSE&#34;来解决。尺寸之后的论证。

Object[Row,Column, drop = FALSE]

因此,对于您的数据集,您可能正在寻找:

x <- matrix(c(1,2,2,1,1,2))
dimnames(x) <- list(c("TGTT", "TGTG", "TGCG", "TGGA", "TCCG", "TCAG"), "TCGA-05-4244-01A-01D-1105-08")
match <- c(1,3,2,6,5,4)
x[match,,drop = F]
     TCGA-05-4244-01A-01D-1105-08
TGTT                            1
TGCG                            2
TGTG                            2
TCAG                            2
TCCG                            1
TGGA                            1

答案 1 :(得分:0)

columnname <- colnames(x)
x <- as.data.frame(x[match,])

colnames(x) <- column_name

我可以使用其他一些信息通过rownames订单获取match并重命名x

你们有什么简单而好的想法吗?