3

这很奇怪,我非常怀疑你能做到我所要求的,因为这个概念非常愚蠢。如果我要对某物进行四舍五入,它是否可以不四舍五入?

所以:

x <- round(rnorm(10))
x

你不知道原来的东西是什么,你能回到原来的数字rnorm吗?

我问是因为当我为用户编写函数时,我经常在其中添加舍入参数以使显示更好,但我总是让用户控制数字并允许独立控制列表对象的数字舍入。这使得一个充满digits=参数的函数非常快。如果我知道用户可以以某种方式神奇地重新提取原始值,我会将这些参数放在函数内部。我可以保持数字不变,分配给一个类并使用打印方法,但对于一个列表来说,这充其量是一种痛苦。

4

3 回答 3

6

如果您对实际数据本身进行四舍五入,通常您无法恢复它。相反,您应该使用自定义更改显示print或尝试类似option(digits=3). 在随机数生成的非常特殊的情况下,如果您首先设置种子 ( set.seed),记住它,然后从同一个种子重新生成随机数据,您可以恢复原始数据。

于 2012-11-04T09:32:25.523 回答
4

您可以使用sprintf来修改事物的打印方式。

myfun <- function(){
    x <- rnorm(3)
    print(sprintf("%.3f", x))
    invisible(x)
}

out <- myfun()
#[1] "-0.527" "0.226"  "-0.168"
out
#[1] -0.5266562  0.2262599 -0.1680460
于 2012-11-04T15:11:18.237 回答
1

因为我无法抗拒这样做的艰难...

x<-runif(100)*10
z<-round(x,2)
y<-x-z
于 2012-11-04T16:23:06.210 回答