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

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

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

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

4

1 回答 1

3

做:

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

但是我在你之前的问题中没有给你这个准确的答案吗?(见closest.labels变量)。

于 2012-08-29T05:40:13.067 回答