我想使用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
我该怎么办?
答案 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)