楼主: anchu
1917 7

[问答] R语言的诡异之处,同样的数据,同一个函数得到不同的结果 [推广有奖]

  • 1关注
  • 1粉丝

硕士生

80%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
2164 点
帖子
106
精华
0
在线时间
162 小时
注册时间
2015-9-13
最后登录
2020-7-25

楼主
anchu 在职认证  发表于 2019-11-10 19:21:33 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
同一个数据,我把它输入到一个大函数中,该函数包含一个计算互信息的函数命名为MI,输出的中间结果是一个极小的负值,如:-2.5232e-17


然而,我把该数据直接输入到MI这个函数里,得到值为0,而真实的值应该为0.

不知道哪位大神遇到该问题,请教是什么原因导致该结果的发生,又是如何解决的?谢谢!
二维码

扫码加我 拉你入群

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

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

关键词:R语言 是什么原因 不知道 互信息 真实的

回帖推荐

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

round(sum(c(2,1.2,-0.8,-2.4,3,1.2,3.1,-1.5,-4.4,-1.4)), 8)

沙发
cheetahfly 在职认证  发表于 2019-11-10 21:45:46
浮点精度问题,很普遍,不诡异,你试试
sqrt(2) ^ 2 == 2
identical(sqrt(2) ^ 2, 2)
解决办法:
all.equal(sqrt(2) ^ 2, 2)

藤椅
anchu 在职认证  发表于 2019-11-11 08:48:45
多谢回答,原来是精度问题。
那有没有办法把那个极小数-2.5232e-17 变成0?谢谢!

板凳
anchu 在职认证  发表于 2019-11-11 09:27:14
比如:sum(c(2,1.2,-0.8,-2.4,3,1.2,3.1,-1.5,-4.4,-1.4))得到的结果是-2.220446e-16,
我现在只想让其结果得到0,不能用as.integer(),turnc() 这样的函数。求大神帮忙,多谢!

报纸
cheetahfly 在职认证  发表于 2019-11-11 13:23:24
round(sum(c(2,1.2,-0.8,-2.4,3,1.2,3.1,-1.5,-4.4,-1.4)), 8)
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
anchu + 5 + 1 + 1 + 1 精彩帖子

总评分: 论坛币 + 5  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

地板
anchu 在职认证  发表于 2019-11-11 14:28:42
cheetahfly 发表于 2019-11-11 13:23
round(sum(c(2,1.2,-0.8,-2.4,3,1.2,3.1,-1.5,-4.4,-1.4)), 8)
厉害啊,大神!是我想要的答案!非常感谢!

7
anchu 在职认证  发表于 2019-11-11 14:28:47
cheetahfly 发表于 2019-11-11 13:23
round(sum(c(2,1.2,-0.8,-2.4,3,1.2,3.1,-1.5,-4.4,-1.4)), 8)
厉害啊,大神!是我想要的答案!非常感谢!

8
熬夜头会秃 发表于 2019-11-15 18:08:50 来自手机
anchu 发表于 2019-11-10 19:21
同一个数据,我把它输入到一个大函数中,该函数包含一个计算互信息的函数命名为MI,输出的中间结果是一个极 ...
中间是不是有抽样啊。。可能迭代没收敛就终止了,也可能是局部最优解有多个。需要具体分析。

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

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