我有数字的向量在R:计算的位数的数值向量中的R
c(0.9, 0.81)
,我想提取的位数对该矢量中的每个元件。由于数字为9
和81
,因此该命令将返回1
和2
。有没有一个方便的方法来做到这一点?另外,如果结果是1
,我怎样才能扩展到两位数?例如,我想返回的矢量是
c(0.90, 0.81)
我有数字的向量在R:计算的位数的数值向量中的R
c(0.9, 0.81)
,我想提取的位数对该矢量中的每个元件。由于数字为9
和81
,因此该命令将返回1
和2
。有没有一个方便的方法来做到这一点?另外,如果结果是1
,我怎样才能扩展到两位数?例如,我想返回的矢量是
c(0.90, 0.81)
x <- c(0.9,0.81,32.52,0);
nchar(sub('^0+','',sub('\\.','',x)));
## [1] 1 2 4 0
这条小数点,然后剥离所有引导零,最后使用字符串长度作为计算有效位数的间接方法。对于零输入它自然会返回零,但如果您愿意,您可以使用if
表达式明确测试该情况并返回一个。
如akrun提到的,对于小数点后用两位数字打印时:( '%2F',V1)
sprintf('%.2f',x);
## [1] "0.90" "0.81" "32.52" "0.00"
要计算小数点后面的数字,你可以使用nchar
sapply(v, nchar) - 2 # -2 for "." and leading 0
# 1 2
或'nchar(sub('。* \\。','',v1))'顺便说一句,'nchar(v1)-2'也应该起作用 – akrun
您可能需要提一下,这不是一般性的。例如'32.52' – akrun
@akrun是的,正如akrun所说的 – jenesaisquoi
尝试'格式(V1,nsmall = 2)'用于打印或'的sprintf'待办事项你想把它作为'numeric'类返回吗?也许'round(v1,2)' – akrun
在控制台输入'v',你会得到'0.90'和'0.81'。矢量自动打印矢量中任何一个数字的最高位数的所有元素。 –