dkr*_*der 6 format formatting r
当我尝试使用format()格式化数字向量时,只有第一个数字尊重"digits"参数
format(c(1.508390e-06, 8.487128e-02, 4.185008e-01, 4.785161e-01, -8.332557e-01),
digits = 3, scientific = FALSE)
[1] " 0.00000151" " 0.08487128" " 0.41850080" " 0.47851610" "-0.83325570"
Run Code Online (Sandbox Code Playgroud)
但是,如果我依次对每个元素进行透析,我会得到预期的结果.
sapply(c(1.508390e-06, 8.487128e-02, 4.185008e-01, 4.785161e-01, -8.332557e-01), FUN = function(x) { format(x,digits = 3, scientific = FALSE) } )
[1] "0.00000151" "0.0849" "0.419" "0.479" "-0.833"
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么吗?
请注意,如果我设置scientific = FALSE,那么所有数字的格式都正确:
format(c(1.508390e-06, 8.487128e-02, 4.185008e-01, 4.785161e-01, -8.332557e-01),
digits = 3, scientific = TRUE)
" 1.51e-06" " 8.49e-02" " 4.19e-01" " 4.79e-01" "-8.33e-01"
Run Code Online (Sandbox Code Playgroud)
我不确定为什么你不能运行原子矢量format()并获得所需的结果.它与nsmall参数和小数点右边的位数(可能是未知的)有关,我不太明白.
但看起来我们可以使用列表.来自help(format):
如果
x是列表,则结果是通过应用于format.default(x, ...)列表的每个元素(在unlist自身列表的元素之后)获得的字符向量,然后将每个元素的结果折叠paste(collapse = ", ").
因此,只需将原子矢量强制转换为列表,然后它就会按照需要运行.
format(as.list(x), digits=3, scientific=FALSE)
# [1] "0.00000151" "0.0849" "0.419" "0.479" "-0.833"
Run Code Online (Sandbox Code Playgroud)
数据:
x <- c(1.508390e-06, 8.487128e-02, 4.185008e-01, 4.785161e-01, -8.332557e-01)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
103 次 |
| 最近记录: |