0

我有一个包含几列的矩阵,我想获取提取的特殊列(作为向量),但根据该矩阵中的另一列进行排序。

到目前为止,我正在使用我觉得不太漂亮的 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)

任何建议,更优雅和计算速度更快的方法的例子?

4

1 回答 1

2

您可以使用match

df$colB[match(my_order,df$colA)]

由于您colB已经订购,match(my_order,df$colA)恰好返回相同的结果,但通常您需要索引。

于 2013-01-10T15:34:11.720 回答