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 に答える