1

次のデータがあるとします。

         [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
   [1,]  983  362  170  303  914  843  480  489  474   355
   [2,]  204  205  810  762  758  404   24  111  265   586

これらの各値は、と呼ばれる別のセットのインデックスに対応しますlabels。上記とまったく同じ構造を作成したいのですが、インデックスを作成する代わりに、値が必要です。

これまでに試しました:

labels[attr(k,"nn.index")[1,]]

これは、最初の行に必要な結果を返し[1] 2 2 2 2 2 2 2 2 2 2、次のようになります。

labels[attr(k,"nn.index")[2,]]

[1] 0 0 0 0 0 0 0 0 0 0これは、2行目の希望する結果を返します。

私の問題は、すべての行に対してこれを実行しようとすると、次の結果が得られることです。

labels[attr(k,"nn.index")[1:2,]]
 [1] 2 0 2 0 2 0 2 0 2 0 2 0 2 0 2 0 2 0 2 0

以下の結果を得るには、何を変更する必要がありますか?

         [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
   [1,]   2    2    2    2    2    2    2    2    2    2
   [2,]   0    0    0    0    0    0    0    0    0    0

また、実際には2行だけでなく、数千行あります。

4

1 に答える 1

3

行う:

apply(attr(k,"nn.index"), 2, function(col) labels[col])

しかし、私はあなたの前の質問であなたにこの正確な答えを与えませんでしたか?(closest.labels変数を参照してください)。

于 2012-08-29T05:40:13.067 に答える