R中的两位数

时间:2014-01-27 15:11:15

标签: r double character matching

我对R在内部处理双重,数字和字符数据类型的方式有疑问。

我的问题来自这段代码:

dn <- 1.0
dc <- "1.0"
dn == dc  #  FALSE
dn  # 1
as.double(dc) # 1

问题是我期望双重保留格式,逗号后的数字,而不是以如此残酷的方式切割,这使得难以将它与相同数字的字符版本进行比较。 当然,问题不存在于像16.2这样的数字中,格式正确保留。

有没有办法让'双'格式持久?

非常感谢

1 个答案:

答案 0 :(得分:1)

dn <- 1.0
sprintf("%.1f",dn)
# [1] "1.0"
sprintf("%.2f",dn)
# [1] "1.00"
sprintf("%.22f",dn)
# [1] "1.0000000000000000000000"

dc == sprintf("%.1f",dn)
#[1] TRUE

dn在内部存储为double precision float(R中的“numeric”)。你如何展示它取决于你。