-3

I行列の列に並べ替えを適用した後のベクトルの役割は何sですか?

    n = 10
    I = c(2, 8)
    s = matrix(runif(n*20), nrow=20)
    M  = apply(s, 2, sort)[I,]

このコードを別の簡単な方法で書くことはできますか?

4

1 に答える 1

3

R のべき乗は、単一の値ではなく、ベクトルによってベクトルまたは配列にインデックスを付けることです。次の例を想定します。

foo = 5:10 # foo = 5 6 7 8 9 10
foo[3]     # 7
foo[1:3]   # 5 6 7
foo[-2]    # excluding the 2nd item -> 5 7 8 9 10

配列上で:

bar = data.frame(1:3, 4:6)
bar[,2]                    # The 2nd column: 4 5 6
bar[-1,]                   # Excluding the first row
bar[c(2,3),]               # Extracts the second and third rows 

元の例でapply(s, 2, sort)は、行列のすべての列を並べ替えs(使用apply(s, 1, sort)した場合は行を並べ替えます)、[I,]前のコマンドの結果を 2 番目と 8 番目の行のみに制限します。したがって、このプログラムの後、 の各列には 2 番目と 8 番目に小さい項目のみが表示されますs

Rでは異なる意味を持つ可能性があることに注意してIください。あなたの場合、それは単なる変数名であり、他のものである可能性があります。しかしI(x)、R の関数でもあります。詳細については、 を使用できます?I

于 2012-10-26T03:21:54.347 に答える