说我有以下数据:
[,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
此外,在现实生活中有数千行,而不仅仅是两行。
答案 0 :(得分:3)
执行:
apply(attr(k,"nn.index"), 2, function(col) labels[col])
但我没有在your previous question给你这个精确答案吗? (参见closest.labels
变量)。