如何用实际值替换索引?

时间:2012-08-29 05:36:18

标签: r

说我有以下数据:

         [,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,我想要的第二行结果。

我的问题是,如果我尝试对所有行执行此操作,我会得到以下结果:

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

此外,在现实生活中有数千行,而不仅仅是两行。

1 个答案:

答案 0 :(得分:3)

执行:

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

但我没有在your previous question给你这个精确答案吗? (参见closest.labels变量)。