【发布时间】:2017-12-13 08:38:40
【问题描述】:
我有一个包含经度和纬度的导入表,并希望从中创建一个空间网格。 坐标格式如下:
[1] 6.955 6.937 6.956 6.923
所以对我来说看起来是数字。但是尝试创建网格时会发生此错误:
.local(obj, ...) 中的错误:
无法从非数值矩阵推导出坐标
当我尝试使用 as.numeric 更改格式时,我得到以下结果:
[1] 10 9 6 8
如何在不改变数值的情况下转换数值格式的坐标?
longitude = structure(c(9L, 7L, 10L, 3L, 8L, 4L, 6L, 2L, 11L, 1L, 5L, 9L,
7L, 10L, 3L, 8L, 4L, 6L, 2L, 11L, 1L, 5L), .Label = c("6.920",
"6.922", "6.923", "6.924", "6.926", "6.936", "6.937", "6.939",
"6.955", "6.956", "6.958"), class = "factor")
latitude = structure(c(10L, 9L, 6L, 8L, 1L, 5L, 3L, 2L, 7L, 8L, 4L, 10L,
9L, 6L, 8L, 1L, 5L, 3L, 2L, 7L, 8L, 4L), .Label = c("50.911",
"50.918", "50.920", "50.929", "50.930", "50.931", "50.934", "50.950",
"50.965", "50.969"), class = "factor")
原始表luftdaten.set 包含纬度、经度和颗粒物值。我试图创建一个网格:
coordinates(luftdaten.set) <- ~ latitude + longitude
我还尝试创建一个只有坐标的数据框并尝试从中派生一个网格:
luftdaten.grid <- data.frame(latitude, longitude)
luftdaten.grid <- data.frame(latitude, longitude)
两者都会引发描述的错误。
coordinates 在 SpatialTools 的“sp”包中。
【问题讨论】:
-
str给出的当前类型是什么?如果是因素,您需要执行as.numeric(as.character(...))将标签转换为数字,而不是获取它们在内部表示的整数。 -
检查列的
class是否为因子,如果是使用as.numeric (as.character(your column)) -
我的数据的 dput(mat) 结果是: > dput(longitude) structure(c(9L, 7L, 10L, 3L, 8L, 4L, 6L, 2L, 11L, 1L, 5L , 9L, 7L, 10L, 3L, 8L, 4L, 6L, 2L, 11L, 1L, 5L), .Label = c("6.920", "6.922", "6.923", "6.924", "6.926", " 6.936", "6.937", "6.939", "6.955", "6.956", "6.958"), class= "因子") > dput(纬度)结构(c(10L, 9L, 6L, 8L, 1L, 5L , 3L, 2L, 7L, 8L, 4L, 10L, 9L, 6L, 8L, 1L, 5L, 3L, 2L, 7L, 8L, 4L), .Label = c("50.911", "50.918", "50.920" , "50.929", "50.930", "50.931", "50.934", "50.950", "50.965", "50.969"), class= "因子")
-
我尝试使用 as.numeric (as.character(your column)) 表达式,但它仍然返回相同的错误消息
-
longitude <- as.numeric(as.character(longitude))似乎可以转换为数字。但是,如果在稍后阶段您仍然收到错误,您也应该显示此代码。