从字符转换为数字时丢失信息

时间:2018-03-28 22:25:38

标签: r

我正在尝试将“9.230”等字符转换为数字类型。 首先,我删除了点,因为它返回了我“NA”,然后我转换为数字。 问题是,当我转换为数字时,我失去了尾随零:

示例:

  

A< -9.230

     

as.numeric(GSUB( “ ”“”,一,固定= TRUE))

返回:923

有谁知道如何避免这种情况?

2 个答案:

答案 0 :(得分:1)

寻找

的结果
a<-9.230
gsub(".","",a,fixed=TRUE)
#[1] "923"

问题将是为什么?因为在fixed=TRUE的参数中使用了gsub。因此.gsub的{​​{1}}的第二个参数替换为""

基本上这就是as.numeric(gsub(".","",a,fixed=TRUE))导致923

的原因

还有另外一点。 a <- 9.230如何在character函数中更改为gsubr的{​​{1}}文档中已对此进行了解释:

  

参数:x,文本
  寻找匹配的字符向量或对象   它可以被as.character强制转换为字符向量。长   支持向量。

最后一个问题:如何避免这种行为?

不要使用gsub。使用gsub

答案 1 :(得分:1)

您指定的编号为9.230,与9.23相同。系统如何知道有一个尾随零?如果要转换字符串,请使用字符串“9.230”。