楼主: 任潇潇
1725 7

[学习分享] 关于矩阵抽样的R代码 [推广有奖]

  • 0关注
  • 0粉丝

本科生

25%

还不是VIP/贵宾

-

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

楼主
任潇潇 发表于 2020-12-23 16:33:07 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
各位大神,我想要从一个100行10列的矩阵中按照按下面的代码中的P值从大到小的顺序提取前k行,这种R代码应该怎么写,是要构造一个循环吗?set.seed(123)
x=rnorm(1000)
y=matrix(x,100,10)
F=sqrt(sum(diag(t(y)%*%y)))
S=apply(abs(y),1,sum)
P=S^2/F^2



二维码

扫码加我 拉你入群

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

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

关键词:R代码

本帖被以下文库推荐

沙发
llb_321 在职认证  发表于 2020-12-23 19:13:17
  1. #简单写个函数
  2. topK <- function (x,k) {
  3.   if (k <= dim(x)[1]) x[which(rank(rowSums(x))>(dim(x)[1]-k)),]
  4.   else
  5.   print("Err: the specified k is out of matrix dimension")
  6.   }

  7. A<-matrix(runif(20,1,10),4) #示例4X5矩阵

  8. topK(A,3) #提取矩阵A按行和排列前 k=3 子矩阵
复制代码

已有 1 人评分论坛币 收起 理由
cheetahfly + 10 热心帮助其他会员

总评分: 论坛币 + 10   查看全部评分

藤椅
llb_321 在职认证  发表于 2020-12-23 20:07:21
那个,function里的A改成x

板凳
任潇潇 发表于 2020-12-23 20:09:15
llb_321 发表于 2020-12-23 20:07
那个,function里的A改成x
好的,谢谢您,我试一下。

报纸
任潇潇 发表于 2020-12-23 20:28:47
llb_321 发表于 2020-12-23 20:07
那个,function里的A改成x
您好,我想给x加个绝对值,矩阵每行元素的绝对值求和,怎么就出错了
topK <- function (x,k) {
  if (k <= dim(x)[1]) x[which(rank(rowSums(abs(x))>(dim(x)[1]-k)),]
  else
    print("Err: the specified k is out of matrix dimension")
}

地板
llb_321 在职认证  发表于 2020-12-24 04:36:17
任潇潇 发表于 2020-12-23 20:28
您好,我想给x加个绝对值,矩阵每行元素的绝对值求和,怎么就出错了
topK
x[which(rank(rowSums(abs(x)))>(dim(x)[1]-k)),]
您改的代码里abs(x)后面少了个 ")"

7
llb_321 在职认证  发表于 2020-12-24 04:48:02
另外如果按你后面提到的p值,可以用函数嵌套的方式
  1. topK <- function (x, k) {
  2.   pvalue <- function (x) {
  3.     F = sqrt(sum(diag(t(x) %*% x)))
  4.     S = apply(abs(x), 1, sum)
  5.     P = S ^ 2 / F ^ 2
  6.   }
  7.   if (k <= dim(x)[1])
  8.     x[which(rank(pvalue(x)) > (dim(x)[1] - k)), ]
  9.   else
  10.     print("Err: K is out of matrix dimension")
  11. }

  12. A <- matrix(rnorm(20, 0, 1), 4)
  13. topK(A, 3)
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Sunknownay + 3 + 3 + 3 热心帮助其他会员

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

8
任潇潇 发表于 2020-12-24 15:09:20
llb_321 发表于 2020-12-24 04:48
另外如果按你后面提到的p值,可以用函数嵌套的方式
谢谢您

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

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