楼主: 任潇潇
1349 3

[学习分享] 矩阵抽样 [推广有奖]

  • 0关注
  • 0粉丝

本科生

25%

还不是VIP/贵宾

-

威望
0
论坛币
439 个
通用积分
13.8171
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
500 点
帖子
37
精华
0
在线时间
90 小时
注册时间
2019-12-17
最后登录
2026-1-6

楼主
任潇潇 发表于 2020-12-23 21:36:28 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
set.seed(123)
a=rnorm(1000)
y=matrix(a,100,10)#将随机数列转化为100行10列的矩阵
S=apply(abs(y),1,sum)#计算每一行元素的绝对值之和
R=order(S,decreasing=TRUE)#排序,显示结果为元素位于的行号
#用一个函数操作
topK <- function (x,k) {
  if (k <= dim(x)[1]) x[which(rank(apply(abs(x),1,sum))>(dim(x)[1]-k)),]
  else
    print("Err: the specified k is out of matrix dimension")
}

set.seed(123)
x<-matrix(rnorm(1000),100)

topK(x,10) #提取矩阵x按行和排列前 k=10 子矩阵
同样都是按行和由大到小的顺序抽取一部分矩阵的行,为什么上面的代码显示第49行的行和最大,而用函数操作,显示矩阵中第8行行和最大呢,请各位大神帮帮忙。

二维码

扫码加我 拉你入群

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

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

关键词:Decreasing easing matrix apply Order

本帖被以下文库推荐

沙发
llb_321 在职认证  发表于 2020-12-24 10:32:21
比较一下吧
  1. sort(c(30,20,50,70,10))
  2. #[1] 10 20 30 50 70 这是把上面的向量按增序重新排列

  3. order(c(30,20,50,70,10))
  4. #[1] 5 2 1 3 4 这是上面排序后的各元素在原来的向量中的位置

  5. rank(c(30,20,50,70,10))
  6. #[1] 3 2 4 5 1 这是向量各元素的排序

  7. #如果需要找出到底哪个最大
  8. which.max(c(30,20,50,70,10))
  9. #[1] 4

  10. #clear?
复制代码

藤椅
任潇潇 发表于 2020-12-24 15:07:04
llb_321 发表于 2020-12-24 10:32
比较一下吧
老师您好,我知道这两个函数不一样,我想用order函数验证一下我抽出来的行对不对,但用order排出来第49行元素行和最大,用下面的函数抽出来的行和最大行和原矩阵对比,显示原矩阵的第8行。

板凳
llb_321 在职认证  发表于 2020-12-24 15:40:42
任潇潇 发表于 2020-12-24 15:07
老师您好,我知道这两个函数不一样,我想用order函数验证一下我抽出来的行对不对,但用order排出来第49行 ...
我不是什么老师 只是来玩的
可以把代码拆开来 一个一个地过一下 看看每一步的结果
也可以手算一下 看看该用order还是rank
上面的which.max也可以查看哪个最大

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

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