楼主: 略胜亿筹
5520 3

[问答] R使用as.matrix转化dist生成距离矩阵问题 [推广有奖]

  • 0关注
  • 0粉丝

大专生

83%

还不是VIP/贵宾

-

威望
0
论坛币
642 个
通用积分
2.7139
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
86 点
帖子
5
精华
0
在线时间
123 小时
注册时间
2016-3-30
最后登录
2021-6-25

楼主
略胜亿筹 学生认证  发表于 2019-4-27 14:50:39 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我用dist计算距离后,用as.matrix()把距离转化为一个矩阵,之后想用apply函数对这个矩阵的每一行除以一个向量g,代码如下
  1. > # z是5个2维坐标
复制代码
问题在于,我发现这里用apply以后,矩阵d的每一行中的所有元素都除以了g的第一个元素,而不是对应元素相除。但是我发现如果这里的d不是用as.matrix(dist())方式生成的矩阵,而是一个一般的5*5矩阵,那么用apply后的结果应该是对应元素相除。所以想请教一下大家这个问题该怎么解决,才能实现我想要的对应元素相除呢?
二维码

扫码加我 拉你入群

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

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

关键词:matrix 距离矩阵 Mat IST Dis

沙发
略胜亿筹 学生认证  发表于 2019-4-27 14:55:19
  1. > z
  2.      [,1] [,2]
  3. [1,]    1    6
  4. [2,]    2    7
  5. [3,]    3    8
  6. [4,]    4    9
  7. [5,]    5   10
  8. > g
  9. [1] 1 2 3 4 5
  10. > d <- as.matrix(dist(z))
  11. > apply(d,1,function(x) x/g)
  12.           1         2         3         4         5
  13. 1 0.0000000 1.4142136 2.8284271 4.2426407 5.6568542
  14. 2 0.7071068 0.0000000 0.7071068 1.4142136 2.1213203
  15. 3 0.9428090 0.4714045 0.0000000 0.4714045 0.9428090
  16. 4 1.0606602 0.7071068 0.3535534 0.0000000 0.3535534
  17. 5 1.1313708 0.8485281 0.5656854 0.2828427 0.0000000
  18. > d[1,2]/g[2]
  19. [1] 0.7071068
  20. > d[1,2]/g[1]
  21. [1] 1.414214
复制代码


代码没发出来,重发一下

藤椅
略胜亿筹 学生认证  发表于 2019-4-27 15:22:22
问题已解决!换了一种思路,不用apply函数,而是直接将向量g改为5*5的矩阵就可以了
已有 1 人评分论坛币 收起 理由
cheetahfly + 20 观点有启发

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

板凳
waterhorse 发表于 2019-5-1 04:30:02
使用APPLY更快

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-29 19:58