我在R中有一个数字向量:
c(0.9, 0.81)
我想提取此向量中每个元素的位数。在这种情况下,该命令将返回1
和2
,因为数字为9
和81
。有方便的方法吗?此外,如果结果为1
,我该如何扩展为两位数?例如,我想要一个返回的向量
c(0.90, 0.81)
答案 0 :(得分:6)
要计算小数点后的数字,您可以使用nchar
sapply(v, nchar) - 2 # -2 for "." and leading 0
# 1 2
答案 1 :(得分:4)
x <- c(0.9,0.81,32.52,0);
nchar(sub('^0+','',sub('\\.','',x)));
## [1] 1 2 4 0
这剥离小数点,然后去除所有前导零,最后使用字符串长度作为计算有效位数的间接方法。对于零输入,它自然会返回零,但是如果您愿意,可以使用if
表达式显式测试该情况并返回一个。
正如akrun所提到的,在小数点后用两位数打印:
sprintf('%.2f',x);
## [1] "0.90" "0.81" "32.52" "0.00"