你如何隔离R中小数点后面的数字?

the*_*ist 3 r decimal isolation truncated digit

例如:我有数字 123.456 并想返回 456。

该函数trunc()基本上隔离(截断)小数点的数字。

有没有一个函数可以只隔离小数点的数字?

两个后续问题:

  1. 有没有办法在不写出正则表达式的情况下做到这一点?

  2. 如果我想保留标志怎么办?例如,如果我想(反向)将 -123.456 截断为 -456。

the*_*ist 5

我猜使用模运算符 (%%) 和 1 作为除数。它确实成功地隔离了小数后面的数字,但保留了小数:

123.456 %% 1
[1] 0.456
Run Code Online (Sandbox Code Playgroud)

然而,它仅适用于正数,因为不保留符号,也不报告正确的数字(模运算符功能的 b/c):

-123.456 %% 1
[1] 0.544  #not what is wanted
Run Code Online (Sandbox Code Playgroud)

包括abs()修复该问题,但无助于报告签名。可以通过添加以下内容来包含符号:

sign(x) * (abs(x) %% 1)
Run Code Online (Sandbox Code Playgroud)