【问题标题】:autoKrige - Error in eval(expr, envir, enclos) : object '....' not foundautoKrige - eval(expr,envir,enclos)中的错误:找不到对象'....'
【发布时间】:2014-08-14 14:32:25
【问题描述】:

我对 Automap 包有疑问。

我已经尝试了普通的克里金法,我的数据没有问题并且工作正常。但是当我尝试使用 Universal Kriging 时,收到一条我无法理解的错误消息。

我认为可能很简单,但我不知道为什么该函数没有找到“silt_clay”。

谢谢。

在我的代码上方:

library(automap)
data_interpol<-read.table("merge_guaiba_ceco2.txt", header=T)
head(data_interpol)
   long     lat depth silt_clay    avgran pcsand    om
1 471699 6680184   1.9    51.626 0.6683944 48.313 11.50
2 473777 6679430   1.8    57.810 0.6669483 42.186  8.80
3 471931 6679087   2.4    54.625 0.6718675 45.370  9.30
4 471337 6678456   1.9     2.887 0.4128039 97.113  0.00
5 472936 6678421   2.5    49.136 0.6344626 50.864  9.90
6 473945 6678482   1.9    99.614 0.9984355  0.386  9.45

coordinates(data_interpol)<- ~long+lat
kriging_om = autoKrige(om~ 1, data_interpol, grid4)# works fine
kriging_om_Universal= autoKrige(om~ silt_clay + avgran + pcsand, data_interpol, grid4)
Error in eval(expr, envir, enclos) : object 'silt_clay' not found # my error

####code to obtain grid4:
    grid <- raster( )
    grid <- raster(ncol=1544, nrow=1056, xmn=468318.3, xmx=499998.3, ymn=6634918, ymx=6681238) projection (grid) <- '+proj=utm +zone=22 +south +ellps=aust_SA +units=m +no_defs ‘
    res(grid) <- 30
    grid4 <- as(grid, ‘SpatialPoints’)

编辑讨论错误。更改网格后错误仍然存​​在:

d_margin_xyz 是我的新网格。

str(d_margin_xyz)
Formal class 'SpatialPointsDataFrame' [package "sp"] with 5 slots
  ..@ data       :'data.frame': 1628352 obs. of  1 variable:
  .. ..$ DIST_MARGIN: num [1:1628352] 0 0 0 0 0 0 0 0 0 0 ...
  ..@ coords.nrs : int [1:2] 1 2
  ..@ coords     : num [1:1628352, 1:2] 468333 468363 468393 468423 468453 ...
  .. ..- attr(*, "dimnames")=List of 2
  .. .. ..$ : NULL
  .. .. ..$ : chr [1:2] "x" "y"
  ..@ bbox       : num [1:2, 1:2] 468333 6634963 499983 6681193
  .. ..- attr(*, "dimnames")=List of 2
  .. .. ..$ : chr [1:2] "x" "y"
  .. .. ..$ : chr [1:2] "min" "max"
  ..@ proj4string:Formal class 'CRS' [package "sp"] with 1 slots
  .. .. ..@ projargs: chr NA

使用包含通用克里金法预测器的新网格再次尝试,错误再次出现。有什么线索吗?

kriging_om_Universal= autoKrige(om~ DIST_MARGIN, data_interpol, d_margin_xyz)
Error in eval(expr, envir, enclos) : object 'DIST_MARGIN' not found

【问题讨论】:

  • grid4 中是否有“silt_clay”列?
  • @Pascal 可能是对的。对于通用克里金法,您需要预测位置的预测变量值。你能添加一个grid4的sn-p吗?
  • 嗨@Pascal 我在“grid4”中没有“silt_clay”列。
  • 嗨@Paul Hiemstra,我添加了'grid4'的代码。

标签: r automap


【解决方案1】:

问题在于您的预测对象grid4 只是一个没有属性的SpatialGrid 对象。为了能够使用通用克里金法进行预测,您需要预测位置上所有预测变量(即silt_clayavgran 等)的值,即作为grid4 的属性。您的错误是由silt_clay 不是属性引起的。

要解决此问题,您需要将属性添加到grid4。为此,您需要有某种区域覆盖silt_clay 和其他预测变量的地图。您可以将此地图转换为具有属性的SpatialGrid 对象,或者从该地图中提取grid4 中位置的值。

【讨论】:

  • 好的!我没有用于通用克里金法的 silt_clay 覆盖图。我需要一个地图作为'dist',就像你关于'automap'功能的例子一样?
  • @ThiagoCesarLimaSilveira 是正确的。如果您没有覆盖整个预测区域的协变量地图,则无法使用通用克里金法。
  • 好的!谢谢@Paul Hiemstra。我有一些地图可以帮助我。现在我正在研究如何将这些属性添加到我的“grid4”中。你有什么建议吗?非常感谢!
  • 我相信我会从sp 包中查看overlayover。如果您有一个新的具体问题,只需在 stackoverflow 上创建一个新问题,包括一个可重现的示例。
猜你喜欢
  • 2013-10-28
  • 2017-04-02
  • 2015-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-04
相关资源
最近更新 更多