楼主: drosophilia
9756 4

[求助]如何随机的从矩阵中选取一部分对象 [推广有奖]

  • 0关注
  • 0粉丝

大专生

16%

还不是VIP/贵宾

-

威望
0
论坛币
51 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
345 点
帖子
32
精华
0
在线时间
0 小时
注册时间
2008-6-14
最后登录
2014-5-5

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
有一个关系矩阵,是个方阵,为n*n (n个对象间的关系矩阵) 行标签和列名称相同,表示的都是对象名,想随机从关系矩阵中挑m个对象分析,即得到m*m 方阵,因为n的数目很大,请问有没有比较好的办法实现,删除一些对象也可以,对data.frame的操作不是很熟悉,特请教各位!
二维码

扫码加我 拉你入群

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

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

关键词:Frame 请问有没有 Data Fram 有没有 矩阵 随机 对象

回帖推荐

just31415 发表于3楼  查看完整内容

引用数据框元素的方法与引用矩阵元素的方法相同,可以使用下标或下标向量,也可以使用名字或名字向量.这儿按名字举例:令A为你所说得数据框 N*N的,m<nattach(A) #为了方便数据框数据调用col.name=colnames(A) #得到列名称row.name=rownames(A) sam.col.name=sample(col.name,m,replace=F) #列名向量不返回抽样sam.row.name=sample(row.name,m,replace=F)B=A[sam.row.name,sam.col.name] #生成m*m的矩阵P.S.boot()函数也可以更简便的 ...

philzang 发表于4楼  查看完整内容

# Suppose the correlation matrix is Adim<-dim(A)sample.row<-sample(seq(1,dim[1]),m,replace=F)sample.col<-sample(seq(1,dim[2]),m,replace=F)sample.matrix<-A[sample.row,sample.col]

本帖被以下文库推荐

沙发
zwzpinggu 发表于 2008-6-20 23:15:00 |只看作者 |坛友微信交流群

试试sample函数抽取列和行号,再从data.frame中取数既可

使用道具

藤椅
just31415 发表于 2008-6-21 00:17:00 |只看作者 |坛友微信交流群

引用数据框元素的方法与引用矩阵元素的方法相同,
可以使用下标或下标向量,也可以使用名字或名字向量.
这儿按名字举例:
令A为你所说得数据框 N*N的,m<n


attach(A) #为了方便数据框数据调用
col.name=colnames(A) #得到列名称
row.name=rownames(A)
sam.col.name=sample(col.name,m,replace=F) #列名向量不返回抽样
sam.row.name=sample(row.name,m,replace=F)
B=A[sam.row.name,sam.col.name] #生成m*m的矩阵

P.S.

boot()函数也可以更简便的实现抽样,具体可看看该函数参数说明.偶不常用呀.


[此贴子已经被作者于2008-6-21 0:25:13编辑过]

https://app.yinxiang.com/referral/Registration.action?sig=2d

使用道具

板凳
philzang 发表于 2008-6-21 00:35:00 |只看作者 |坛友微信交流群

# Suppose the correlation matrix is A

dim<-dim(A)

sample.row<-sample(seq(1,dim[1]),m,replace=F)

sample.col<-sample(seq(1,dim[2]),m,replace=F)

sample.matrix<-A[sample.row,sample.col]

使用道具

报纸
drosophilia 发表于 2008-6-24 21:05:00 |只看作者 |坛友微信交流群

感谢两位的帮助,我深深的学习了,也找到了解决问题的方法;

两位的结果都是一样的,但都忽略了一个问题,就是所得的结果不是m个对象之间的关系矩阵,即对称的方阵,该方阵对角线上的元素值是一样的,如果是距离矩阵的话,那么对角线上面的元素的值都是0,因为自己跟自己的关系,如果是距离关系的话,就应该是0,如果是相似度矩阵的话,对角线上的元素都是1,自己跟自己的相似度为100%。

所以取的m个行标签(下标向量或者名字向量)跟m个列标签是一样的,并且顺序也应该一样,例如行标签是(2 3 5 7),列标签也应该是(2 3 5 7),这里我用的是下标向量而不是名字向量, 考虑到行标签和列标签都是一样的,表示的是n个对象名,所以随机取的行标签就应该是列标签,所以代码大致如下:(我是二楼的朋友的代码改的)

col.name=colnames(A) 
sam.col.name=sample(col.name,m,replace=F)
B=A[sam.col.name,sam.col.name]

没太明白二楼的这句

attach(A) #为了方便数据框数据调用,

有什么用?没用它也可以,查了哈资料,大致了解跟什么内存中的搜索路径绑定有关, 从而简化了访问

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-6-4 13:24