【发布时间】:2017-08-15 00:54:09
【问题描述】:
所以基本上我正在做一个物理实验,在我的表格中,我希望将我的数据四舍五入到与错误相同的精度,即四舍五入到 1 sig fig。
例如,如果我有以下情况:
angle <- c(4, 4.1, 4.2)
angle.error <- c(0.024, 0.3, 0.113)
data <- data.frame(angle,angle.error)
想要我最终得到的是将角度误差四舍五入到 1 sig fig,并将角度四舍五入到相应的小数位数作为角度误差,给出
angle <- c(4.00, 4.1, 4.2)
angle.error <- c(0.02,0.3,0.1)
data <- data.frame(angle, angle.error)
希望这是有道理的!这是我们被教导呈现数据的标准方式,因此我很惊讶我发现找到正确的方式来做这件事是多么困难。任何贡献都会很棒!
编辑:
如果我想把它变成一个 UDR,假设数据在第 5 列,错误在我的数据框的第 6 列,我写:
Conv2 <- function(x) {
x[6] <- signif(x[6],1)
exp <- floor(log10(x[6]))
man <- x[6]/10^exp
x[5] <- round(x[5], -exp) # Error associated with this line I think
sapply(seq_along(x[5]), function(i) format(x[i,5], nsmall=-exp[i]))
return(x)
}
当我实现它时,我得到了错误 'FUN(X[[i]], ...) 中的错误:数学函数的非数字参数'
【问题讨论】:
-
我可能需要澄清一下。您是否使用“1dp”来表示 1 个有效数字或 1 个小数位。如果您没有将 1dp 与 1 sig fig 互换使用,那么您的输出似乎不太正确。此外,您说您希望
angle舍入到与angle.error相同数量的 sigfigs,但您的输出使用两个 sigfigs 来表示angle而angle.error只有一个。 -
是的,很抱歉我弄错了 - 我现在已经编辑它以使其有意义
标签: r rounding presentation significant-digits