给定一个data.frame:
foo <- data.frame(ID=1:10, x=1:10)
rownames(foo) <- LETTERS[1:10]
我想对行的子集重新排序,这些行由它们的行名定义。但是,我也想交换foo的行名。我可以
sel <- c("D", "H") # rows to reorder
foo[sel,] <- foo[rev(sel),]
sel.wh <- match(sel, rownames(foo))
rownames(foo)[sel.wh] <- rownames(foo)[rev(sel.wh)]
但这是漫长而复杂的。有没有更简单的方法?
最佳答案
我们可以将sel
中的rownames
值替换为sel
的相反值。
x <- rownames(foo)
foo[replace(x, x %in% sel, rev(sel)), ]
# ID x
#A 1 1
#B 2 2
#C 3 3
#H 8 8
#E 5 5
#F 6 6
#G 7 7
#D 4 4
#I 9 9
#J 10 10
关于重新排序R data.frame的子集,同时修改行名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43252184/