楼主: 缥缈孤鸿_
14886 10

[问答] R语言中dist函数的结果怎么转换为矩阵形式? [推广有奖]

  • 10关注
  • 0粉丝

硕士生

58%

还不是VIP/贵宾

-

威望
0
论坛币
4 个
通用积分
4.6019
学术水平
5 点
热心指数
5 点
信用等级
5 点
经验
27447 点
帖子
126
精华
0
在线时间
195 小时
注册时间
2014-6-8
最后登录
2024-5-19

楼主
缥缈孤鸿_ 发表于 2017-10-18 22:45:52 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
唉,我是个R新手,为了学这个语言,想把TSP问题的遗传算法程序用R来编,然后就遇到这个问题,用dist计算欧氏距离,相关代码是这样的:
  1. NVAR <- 10      #变量维数(城市个数)
  2. POS <- matrix(runif(NVAR*2,0,3),nrow = NVAR)      #生成随机城市位置
  3. DIS <- dist(POS,diag = 1,upper = 1)
复制代码
结果在命令窗口显示的挺漂亮,但是这里并不能直接写入matrix,因为虽然对角元素显示了0,但是并不能提取,也就是DIS[1]是2.5244128!我若是想按如下形式得到距离矩阵,求个简便的方法、(ps这个结果是什么格式的,class显示“dist”,是一种特殊的数据类型吗)
1.png


二维码

扫码加我 拉你入群

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

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

关键词:Dis R语言 IST 欧氏距离 遗传算法

回帖推荐

cheetahfly 发表于6楼  查看完整内容

要这样做: DIS

沙发
jiangbeilu 学生认证  发表于 2017-10-18 23:18:49
这个很简单的,只需要对DIS做一次转换即可:
用as.matrix(DIS)就可以得到你要的结果了

藤椅
缥缈孤鸿_ 发表于 2017-10-18 23:36:08
jiangbeilu 发表于 2017-10-18 23:18
这个很简单的,只需要对DIS做一次转换即可:
用as.matrix(DIS)就可以得到你要的结果了
额,好像,不行吧,我试了下,好像没变类型,还是dist

板凳
cheetahfly 在职认证  发表于 2017-10-19 08:14:03
缥缈孤鸿_ 发表于 2017-10-18 23:36
额,好像,不行吧,我试了下,好像没变类型,还是dist
不要“好像”,你没有真正试过吧?
dist()函数的帮助文档中说得明明白白:
For the default method, a "dist" object, or a matrix (of distances) or an object which can be coerced to such a matrix using as.matrix().

报纸
缥缈孤鸿_ 发表于 2017-10-19 08:29:33
cheetahfly 发表于 2017-10-19 08:14
不要“好像”,你没有真正试过吧?
dist()函数的帮助文档中说得明明白白:
For the default method, a  ...
别这样,我只想说的委婉一点,另外、怕是你才没有试过吧 2.png 1.png

地板
cheetahfly 在职认证  发表于 2017-10-19 08:47:06
缥缈孤鸿_ 发表于 2017-10-19 08:29
别这样,我只想说的委婉一点,另外、怕是你才没有试过吧
要这样做:

DIS  <- as.matrix(DIS)
class(DIS)

R语言是“copy on modify”的。

7
缥缈孤鸿_ 发表于 2017-10-19 09:02:11
cheetahfly 发表于 2017-10-19 08:47
要这样做:

DIS
哦哦,多谢,看来我还是太不会用了。
另外再问你个问题,像MATLAB有这样的赋值语句:[x,y] = size(z),R有没有能够把比如dim(z)的结果同时赋值给两个变量的功能、

8
cheetahfly 在职认证  发表于 2017-10-19 09:05:38
缥缈孤鸿_ 发表于 2017-10-19 09:02
哦哦,多谢,看来我还是太不会用了。
另外再问你个问题,像MATLAB有这样的赋值语句:[x,y] = size(z),R ...
不知道你是不是指这个:
a <- b <- 123

9
缥缈孤鸿_ 发表于 2017-10-19 09:22:30
cheetahfly 发表于 2017-10-19 09:05
不知道你是不是指这个:
a
我想实现的是,把矩阵z的行数和列数分别赋值给两个变量x和y,或者说一个函数若有多个输出结果,按不同变量分别保存

10
cheetahfly 在职认证  发表于 2017-10-19 09:28:00
缥缈孤鸿_ 发表于 2017-10-19 09:22
我想实现的是,把矩阵z的行数和列数分别赋值给两个变量x和y,或者说一个函数若有多个输出结果,按不同变量 ...
明白了,R语言的vector和list都能够比较方便的达到这个功能,比如:

a <- dim(matrix(1:10, 2))
a
[1] 2 5

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

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