按R中的列表对矩阵进行排序

时间:2018-04-10 06:27:05

标签: r

我想使用R对基于列表的矩阵进行排序。但是,对于该列表中的每个元素,有多个行与列表中的单个元素相关联。示例如下所示:

Name    value 
 A        1
 B        2
 B        4
 C        5

l <- c("C", "B", "A")

如果我想将矩阵更改为

Name    value 
 C        5
 B        2
 B        4
 A        1

我该怎么办?

1 个答案:

答案 0 :(得分:1)

以下是data.table的解决方案:

library("data.table")
DT <- fread(
"Name    value 
A        1
B        2
B        4
C        5")
l <- c("C", "B", "A")
DT[l, on="Name"]
# > DT[l, on="Name"]
#    Name value
# 1:    C     5
# 2:    B     2
# 3:    B     4
# 4:    A     1

data.table在操作期间保留行的顺序 以下是基础R的变体:

df <- as.data.frame(DT)
merge(data.frame(Name=l), df, sort=FALSE)
相关问题