根据R中定义的顺序获取列值

时间:2013-01-10 15:28:57

标签: r for-loop

我有一个包含多列的矩阵,我想得到 在特殊列上提取(作为向量),但按顺序排序 该矩阵中的另一列。

到目前为止,我正在使用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)

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

1 个答案:

答案 0 :(得分:2)

您可以使用match

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

由于您的colB已经订购,只有match(my_order,df$colA)碰巧会返回相同的结果,但通常您会想要编制索引。