在R中将数据转换为浮点数

3

我在mysql数据库中存储了一组以VARCHAR格式存储的纬度值-

"[26.455359183496455,26.44229519242908,26.437069181137474,26.45489812668682]"

我已经在 R 中导入了它们,现在想把它们转换为浮点数进行操作。我知道使用 as.numeric() 进行转换,但不知道如何在我的情况下应用它。希望有人能给我指导。


1
你只有一个字符串吗?还是你有一个包含这些字符串列的数据框?每个字符串中总是有4个纬度,还是根据行而变化? - undefined
1个回答

7
你可以分三步完成此操作。
  1. 去除括号(使用 gsub()),
  2. 以逗号为分隔符分割字符串(使用 strsplit()),
  3. 转换成数字(使用 as.numeric())。例如:

在代码中的表现形式如下:

input <- "[26.455359183496455,26.44229519242908,26.437069181137474,26.45489812668682]"
as.numeric(strsplit(gsub("(^\\[|\\]$)", "", input), ",")[[1]])

为什么as.numeric(strsplit(gsub("(^\\[|\\]$)", "", input), ",")[[1]])的类型是double而不是list - undefined
1
@MrFlick 这会将其转换为 float 还是 integer - undefined
1
在R中,数值类型通常根据数据的适用情况在整数(integer)和浮点数(float)之间切换。如果有小数,它将使用浮点数。 - undefined
@MrFlick 你知道是否有办法强制它生成浮点数吗? - undefined
1
@Dij 你可以使用as.double()。R使用双精度浮点数。 - undefined
1
as.numeric()等同于as.double()。它们都返回双精度浮点数。如果你只想将数字强制转换为单精度浮点数,那么可以使用as.single()。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接