R语言-找出向量或矩阵中的最大10个数

一、向量

最大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

二、矩阵

首先设定有矩阵y,9行5列,求最大的10个数的索引。

> y

[,1] [,2] [,3] [,4] [,5]

[1,] 0.00 0.09 0.14 0.12 0.18

[2,] 0.00 0.08 0.11 0.23 0.17

[3,] 0.00 0.14 0.20 0.08 0.12

[4,] 0.00 0.14 0.14 0.12 0.17

[5,] 0.00 0.23 0.17 0.08 0.14

[6,] 0.00 0.08 0.15 0.23 0.18

[7,] 0.06 0.06 0.18 0.12 0.11

[8,] 0.09 0.12 0.15 0.08 0.27

[9,] 0.20 0.20 0.20 0.17 0.06

解答方法:

1、使用sore.list()进行排序

> arrayInd(sort.list(y,decreasing=T)[1:10],dim(y))

[,1] [,2]

[1,]    8    5

[2,]    5    2

[3,]    2    4

[4,]    6    4

[5,]    9    1

[6,]    9    2

[7,]    3    3

[8,]    9    3

[9,]    7    3

[10,]    1    5

2、使用order()函数进行排序

错误的方法:

> arrayInd(which(order(y, decreasing = TRUE) <= 10), dim(y))

[,1] [,2]

[1,]    5    1

[2,]    3    4

[3,]    4    4

[4,]    1    5

[5,]    4    5

[6,]    5    5

[7,]    6    5

[8,]    7    5

[9,]    8    5

[10,]    9    5

which(order(y, decreasing = TRUE) <= 10)含义是先将数据进行排序,然后取索引小于等于10的,最大的10个数在排完序后,索引不应是<=10,而是排在前10位的就是最大的10个数的索引。

正确的方法:

> arrayInd(order(y,decreasing=TRUE)[1:10],dim(y))

[,1] [,2]

[1,]    8    5

[2,]    5    2

[3,]    2    4

[4,]    6    4

[5,]    9    1

[6,]    9    2

[7,]    3    3

[8,]    9    3

[9,]    7    3

[10,]    1    5

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-03 23:31:33

R语言-找出向量或矩阵中的最大10个数的相关文章

一个N*M的矩阵,找出这个矩阵中所有元素的和不小于K的面积最小的子矩阵

题目描述: 一个N*M的矩阵,找出这个矩阵中所有元素的和不小于K的面积最小的子矩阵(矩阵中元素个数为矩阵面积) 输入: 每个案例第一行三个正整数N,M<=100,表示矩阵大小,和一个整数K 接下来N行,每行M个数,表示矩阵每个元素的值 输出: 输出最小面积的值.如果出现任意矩阵的和都小于K,直接输出-1. 样例输入: 4 4 10 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 样例输出: 1 首先这个题应该是有一个动态规划的解法,不过好像复杂度也要到O(n^3lo

UPC 2224 Boring Counting (离线线段树,统计区间[l,r]之间大小在[A,B]中的数的个数)

题目链接:http://acm.upc.edu.cn/problem.php?id=2224 题意:给出n个数pi,和m个查询,每个查询给出l,r,a,b,让你求在区间l~r之间的pi的个数(A<=pi<=B,l<=i<=r). 参考链接:http://www.cnblogs.com/zj62/p/3558967.html #include <iostream> #include <cstdio> #include <cstring> #incl

MATLAB找出一个矩阵中的前n个最小项所在的位置

A=rand(10)%10行10列随机矩阵 t=sort(A);%排序后变成100行1列向量 [m,n]=find(A<=t(20),20);%在A矩阵找到小于t(20)的20个数 index=[m,n]%前20个最小项在矩阵A中的位置[行,列] 原文地址:https://www.cnblogs.com/litthorse/p/9265936.html

R语言:利用caret包中的dummyVars函数进行虚拟变量处理

dummyVars函数:dummyVars creates a full set of dummy variables (i.e. less than full rank parameterization----建立一套完整的虚拟变量 先举一个简单的例子: survey<-data.frame(service=c("very unhappy","unhappy","neutral","happy","very

找出排序数组中重复数字的个数

开始我的思路是先二分查找找到一个,然后再两边分别看个数. 但是这种方法会退化到O(n).效率不好. 所以更好的方法是,先找出第一个,再找出最后一个.这个在二分查找的时候,通过判断条件的处理,是能够获得的. 比较基本的思路是,如果找到的数=k,那么判断前面一个数是不是k,如果不是,停止查找,这个是第一个:如果是的,那么继续在前半部分查找.领悟.

查找矩阵中是否存在一个数

题目意思:给定一个NxN的数字矩阵,每一行从左到右增加,每一列从上到下增加.查找其中是否存在一个数key. 算法思路: 起始从右上角开始查找,a[i][j]初试值为a[0][n-1],循环下列 while( i < n && j >= 0) 如果key < a[i][j],往左走,j–, 如果key > a[i][j],则往下走,执行i++ 如果key == a[i][j],表示找到了 代码: bool findNumber(vector <vector<

在 SPSS Statistics 和 Modeler 中调用 R 语言的实现和应用

http://www.ibm.com/developerworks/cn/data/library/ba/ba-1401spss-r/index.html 登录 | 注册   IBM 技术主题 软件下载 社区 技术讲座 搜索 developerWorks 打印本页面 用电子邮件发送本页面 新浪微博 人人网 腾讯微博 搜狐微博 网易微博 Digg Facebook Twitter Delicious Linked In developerWorks 中国 技术主题 Information Mana

R语言矩阵维度“消失”的问题

矩阵(matrix)是R语言中很基础的一种数据结构,也是R语言使用者经常使用的一种数据结构.矩阵的维度一般为二维(m*n). R语言中矩阵的操作是非常简单易懂的,但是在对R语言做矩阵操作时,有个地方需要特别注意.下面我们通过一个例子说明. 首先,我们创建一个用于测试的矩阵. test1 <- matrix(data = c(1:6), nrow = 3, ncol = 2, dimnames = list(c("row1", "row2", "row

用R语言对NIPS会议文档进行聚类分析

一.用R语言建立文档矩阵 (这里我选用的是R x64 3.2.2) (这里我取的是04年NIPS共计207篇文档做分析,其中文档内容已将开头的作者名和最后的参考文献进行过滤处理) ##1.Data Import  导入自己下的3084篇NIPStxt文档 library("tm")#加载tm包 stopwords<- unlist(read.table("E:\\AllCode\\R\\stopwords.txt",stringsAsFactors=F)) d