在R语言中如何对常数进行乘法运算?

3

我有一个包含5位小数的数字向量,我尝试将其乘以7,结果给出了整数,我不知道为什么小数点消失了。你知道发生了什么吗?

以下是数据:

> df
    ID     Begin       End       Int
1   34 30-Dec-05 15-Jan-06  6.142857
2   66  3-Apr-06  7-Aug-06 13.000000
3   66 28-Feb-06  3-Apr-06 17.857143
4  104 31-Jan-06 28-Feb-06  6.000000
5  104 28-Feb-06 23-May-06 10.000000
6  104 24-May-06  7-Sep-06 22.142857
7  182  9-May-06 10-Jul-06 -1.571429
8  189 10-Apr-06 11-Apr-06 15.285714
9  189 12-Apr-06 12-Apr-06 15.571429
10 189 13-Apr-06 15-Apr-06 15.714286
11 189 13-Aug-06 13-Sep-06 23.428571
12 189  6-Jun-06  6-Jun-06 33.142857
13 193 17-Mar-06 24-Mar-06  2.428571
14 193 27-Jun-06 28-Jun-06 17.000000
15 193  7-Jul-06 25-Sep-06 18.428571
16 237 10-Feb-06 15-Mar-06 -2.000000
17 237 15-Mar-06 10-Apr-06  2.714286
18 264 25-Jan-06  7-Nov-06 -2.285714
19 282 19-Nov-05  1-Aug-06  6.000000

df$cal <- df$Int*7

It gives me

 [1]  43  91 125  42  70 155 -11 107 109 110
[11] 164 232  17 119 129 -14  19 -16  42

最好提供一个数据的 dput(),以使您的示例具有可重现性。这将使情况更容易看清楚。 - MrFlick
2
我得到了相同的输出:所以你将一些数字集合(类中的项目?)除以7(也许是一周的天数?),现在将它们乘以7可以恢复它们的整数性。 - IRTFM
1个回答

11

R根据数字的小数部分调整打印格式;它不一定打印小数点后面的所有零。

> (x = 18/7)
[1] 2.571429
> x*7
[1] 18
> sprintf("%1.10f",x*7)
[1] "18.0000000000"

根据您的示例,这正是正在发生的事情:您的Int值都是1/7的精确倍数(可能是从天数转换为周数的某种转换导致),因此乘以7会给出具有精确或接近精确小数部分.00000...的浮点结果。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接