如何简洁地更改一个数值型的 R 变量(保持其数值类型),例如,"-0.34" 变为 "-.34"?
只有在输出数字值时,您才需要选择具体表示形式(即数字应如何格式化)。您无法将数字变量从“-0.34”更改为“-.34”;两者都是同一个数字的表示。
但是,当您输出表达式e
时,可以选择其格式。我不知道是否有内置的方法可以省略前导“0”,但您总是可以手动删除它:
> sub("^(-?)0.", "\\1.", sprintf("%.2f", -0.34))
[1] "-.34"
你可以为了方便定义一个函数,例如:
numformat <- function(val) { sub("^(-?)0.", "\\1.", sprintf("%.2f", val)) }
除了已有的回答,我想提到包weights
中有一个函数rd()
,可以将数字“四舍五入为没有前导零的文本”。当然,结果不是数字而是字符。
library("weights")
rd(-0.341, digits=2)
[1] "-.34"
我需要展示小数点后三位的数字。
如果您想打印任意数量的小数位并且不想添加另一个包(例如上面的weights
包),那么这个函数(改编自@stefan的答案)似乎可以工作:
numformat <- function(x, digits = 2) {
ncode <- paste0("%.", digits, "f")
sub("^(-?)0.", "\\1.", sprintf(ncode, x))
}
> numformat(-.232, 2)
[1] "-.23"
> numformat(-.232, 3)
[1] "-.232"
> numformat(-.232, 4)
[1] "-.2320"
f = function(X1)gsub("0\\.","\\.", X1)
如果是用于R Markdown报告,我会使用包MOET中的apa()函数和代码:apa(-0.34, 2, FALSE)
,这将在我的文档中返回-.34。