全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
4043 9
2015-08-24
比如,r语言矩阵或者数组中最大10个数的位置怎么可以得到?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2015-8-25 00:06:22
arrayInd(which(order(x, decreasing = TRUE) <= 10), dim(x))
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-8-25 11:06:36
ntsean 发表于 2015-8-25 00:06
arrayInd(which(order(x, decreasing = TRUE)
谢谢,非常感谢
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-8-25 17:56:52
楼上提供的方法好像有问题,楼主问的是,最大10的数的索引(位置),可先按降序排序,得到索引号,然后将前10个取出即可。
建议方法:
order(x,decreasing=TRUE)[1:10]

过程详解:
1、测试数据x

> x
[1] 0.00 0.00 0.00 0.00 0.00 0.00 0.06 0.09 0.20 0.09 0.08 0.14 0.14 0.23
[15] 0.08 0.06 0.12 0.20 0.14 0.11 0.20 0.14 0.17 0.15 0.18 0.15 0.20 0.12
[29] 0.23 0.08 0.12 0.08 0.23 0.12 0.08 0.17 0.18 0.17 0.12 0.17 0.14 0.18
[43] 0.11 0.27 0.06

2、按降序排序

> order(x,decreasing=TRUE)
[1] 44 14 29 33  9 18 21 27 25 37 42 23 36 38 40 24 26 12 13 19 22 41 17 28
[25] 31 34 39 20 43  8 10 11 15 30 32 35  7 16 45  1  2  3  4  5  6
>

3、这里就能取出最大10个数的索引了
> order(x,decreasing=TRUE)[1:10]
[1] 44 14 29 33  9 18 21 27 25 37

4、可以看一下,这取出的10个数的索引是不是指向最大的十个数。
> x[order(x,decreasing=TRUE)[1:10]]
[1] 0.27 0.23 0.23 0.23 0.20 0.20 0.20 0.20 0.18 0.18

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-8-26 09:57:24
hongweigg 发表于 2015-8-25 17:56
楼上提供的方法好像有问题,楼主问的是,最大10的数的索引(位置),可先按降序排序,得到索引号,然后将前 ...
楼主问的是矩阵,所以要提供行列,你的方法是当作向量做
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-8-26 14:38:15
类似2楼的,可以用sort.list
arrayInd(sort.list(A,decreasing=T)[1:10],dim(A))
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群