我有一个包含多列的矩阵,我想得到 在特殊列上提取(作为向量),但按顺序排序 该矩阵中的另一列。
到目前为止,我正在使用for循环方法,我发现没有 很漂亮。我想有更好的方法来做这些事情。
这是一个工作示例:
# creating a example matrix with two columns
df <- data.frame(colA=c("A","B","C","D","E"),colB=(1:5))
mat <- as.matrix(df)
# my desired order
my_order <- c("C","D","A","B")
# For loop and collecting results in a vector
out <- NULL
for(i in my_order) out <- c(out,mat[mat[,1]==i,2])
print(out)
任何建议,更优雅和计算更快的方式的例子?
答案 0 :(得分:2)
您可以使用match
:
df$colB[match(my_order,df$colA)]
由于您的colB
已经订购,只有match(my_order,df$colA)
碰巧会返回相同的结果,但通常您会想要编制索引。