楼主: peijianshi
55434 16

[程序分享] 在R中,如何知道矩阵中最大值所在行列? [推广有奖]

  • 0关注
  • 16粉丝

已卖:352份资源

副教授

80%

还不是VIP/贵宾

-

威望
0
论坛币
638 个
通用积分
2.3662
学术水平
12 点
热心指数
12 点
信用等级
5 点
经验
15373 点
帖子
636
精华
0
在线时间
568 小时
注册时间
2010-3-11
最后登录
2022-9-8

楼主
peijianshi 发表于 2012-4-17 19:05:45 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
在R中,有一个矩阵,能够求出其最值,现在想要知道这个最值所在的行列?如何求得?
谢谢!
二维码

扫码加我 拉你入群

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

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

关键词:最大值 矩阵 能够 如何 最大值

已有 1 人评分经验 收起 理由
unparalleled + 20 精彩帖子

总评分: 经验 + 20   查看全部评分

R万岁!

沙发
kk22boy 发表于 2012-4-17 21:53:01
a=matrix(rnorm(12,3,4),4,3)
which(a==a[which.max(a)],arr.ind=T)
已有 4 人评分经验 学术水平 热心指数 信用等级 收起 理由
unparalleled + 20 精彩帖子
李会超 + 100 精彩帖子
famousid + 1 + 1 + 1 热心帮助其他会员
epoh + 1 + 1 + 1 热心帮助其他会员

总评分: 经验 + 120  学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

如果该贴对您有些许帮助,希望你能回复一下或者评一下热心指数!谢谢!

藤椅
吉林小王子 在职认证  发表于 2012-4-17 23:13:50
a=matrix(rnorm(12,3,4),4,3)
which(a==max(a),arr.ind=T)
已有 3 人评分经验 学术水平 热心指数 收起 理由
unparalleled + 20 精彩帖子
李会超 + 100 精彩帖子
qoiqpwqr + 1 + 1 热心帮助其他会员

总评分: 经验 + 120  学术水平 + 1  热心指数 + 1   查看全部评分

板凳
peijianshi 发表于 2012-4-18 10:25:48
哈哈,感谢诸位和版主的帮助!谢谢!
R万岁!

报纸
peijianshi 发表于 2012-4-18 10:43:05
请允许我再追加一个小问题:
如果求矩阵中最大前十个数所在的位置如何求出?嘿嘿
已有 1 人评分经验 收起 理由
unparalleled + 20 精彩帖子

总评分: 经验 + 20   查看全部评分

R万岁!

地板
kk22boy 发表于 2012-4-18 20:37:28
呵呵,试了一下,不知道这样行不行,就是有点麻烦
a=matrix(rnorm(20),4,5)
r=matrix(0,10,2)
for (i in 1:10){
r[i,]=which(a==a[order(-a)],arr.ind=T)
}
r返回前十个最大数所在的行列
已有 2 人评分经验 学术水平 热心指数 信用等级 收起 理由
unparalleled + 20 精彩帖子
famousid + 1 + 1 + 1 观点有启发

总评分: 经验 + 20  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

如果该贴对您有些许帮助,希望你能回复一下或者评一下热心指数!谢谢!

7
kk22boy 发表于 2012-4-18 20:51:54
呵呵,再改进改进,写了函数n.max(a,b),用来求矩阵a中由大到小前b个数所在的位置,默认为前10个
  1. n.max=function(a,b=10){
  2.   n=matrix(c(0,0),1,2)
  3.   for (i in 1:b){
  4. m=matrix(which(a==unique(a[order(-a)])[i],arr.ind=T),ncol=2)
  5. n=rbind(n,m)
  6. }
  7. n[-1,]   
  8. }

  9. a=matrix(sample(10,20,replace=T),5,4)
  10. > a
  11.      [,1] [,2] [,3] [,4]
  12. [1,]    8   10    4    6
  13. [2,]    1    2    1    4
  14. [3,]    5    4   10    6
  15. [4,]    9    9    2    8
  16. [5,]    7   10    1    1
  17. > n.max(a,5)
  18.       [,1] [,2]
  19. [1,]    1    2
  20. [2,]    5    2
  21. [3,]    3    3
  22. [4,]    4    1
  23. [5,]    4    2
  24. [6,]    1    1
  25. [7,]    4    4
  26. [8,]    5    1
  27. [9,]    1    4
  28. [10,]    3    4
复制代码

我也是刚学,不对的地方多指教,呵呵
已有 2 人评分经验 学术水平 热心指数 信用等级 收起 理由
unparalleled + 20 精彩帖子
famousid + 1 + 1 + 1 热心帮助其他会员

总评分: 经验 + 20  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

如果该贴对您有些许帮助,希望你能回复一下或者评一下热心指数!谢谢!

8
吉林小王子 在职认证  发表于 2012-4-18 20:53:23
x=matrix(as.integer(rnorm(100)*100),10,10);x
y=sort(x,decreasing=T)[1:10];y
index=numeric(20)
i=1
for(j in 1:10)
{
index=which(x==y[j],arr.ind=T)[1]
index[i+1]=which(x==y[j],arr.ind=T)[2]
i=i+2
}
index
matrix(index,10,2)
已有 1 人评分经验 收起 理由
unparalleled + 20 精彩帖子

总评分: 经验 + 20   查看全部评分

9
较拉峭 在职认证  发表于 2012-4-18 21:02:48
楼上都是高手,学习了!
已有 1 人评分经验 收起 理由
unparalleled + 20 精彩帖子

总评分: 经验 + 20   查看全部评分

logistic、分层、R、stata

10
kk22boy 发表于 2012-4-18 21:21:53
> a=matrix(rnorm(12)*10,3,4)
> a
          [,1]       [,2]        [,3]      [,4]
[1,] 0.8269864  -2.122009 -25.4466095 10.469310
[2,] 1.6814683  -8.524294   5.3625801 -5.064049
[3,] 8.0554673 -12.966748   0.2346567  6.479620
> n.max(a,9)
      [,1] [,2]
[1,]    1    4
[2,]    3    1
[3,]    3    4
[4,]    2    3
[5,]    2    1
[6,]    1    1
[7,]    3    3
[8,]    1    2
[9,]    2    4

不过有个问题是,如果产生的数据有两个或者多于两个数据大小相同的时候,这个函数就会出现错误
所以前提是所使用的矩阵里边没有重复数据
呵呵,谁再帮忙改改吧
已有 2 人评分经验 学术水平 热心指数 信用等级 收起 理由
unparalleled + 20 精彩帖子
famousid + 1 + 1 + 1 观点有启发

总评分: 经验 + 20  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

如果该贴对您有些许帮助,希望你能回复一下或者评一下热心指数!谢谢!

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-5 11:06