
这是我用来重新创建此示例的代码:
library(nlme)
spatDat <- data.frame(x = c(0,0.25,0.5,0.75,1), y = c(0,0.25,0.5,0.50,0.75))
cs1Exp <- corExp(1, form = ~x+y)
cs1Exp <- initialize(cs1Exp, spatDat)
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时,我收到此错误:
Error in getClass(Class) :
c("\"corExp\" is not a defined class", "\"corSpatial\" is not a defined class", "\"corStruct\" is not a defined class")
In addition: Warning message:
In if (!is.na(match(Class, .BasicClasses))) return(newBasic(Class, :
the condition has length > 1 and only the first element will be used
Run Code Online (Sandbox Code Playgroud)
为什么我会收到此错误?
附录
R version 2.13.0 (2011-04-13)
Platform: x86_64-pc-linux-gnu (64-bit)
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] nlme_3.1-101
loaded via a namespace (and not attached):
[1] grid_2.13.0 lattice_0.19-26
Run Code Online (Sandbox Code Playgroud)
Hen*_*nry 10
其原因是Initialize需要资金I的nlme,因此不能混同initialize的base.然后有Vivi的评论spatdat$y
这有效:
> library(nlme)
> spatDat <- data.frame(x = c(0,0.25,0.5,0.75,1), y = c(0,0.25,0.50,0.75,1.0))
> cs1Exp <- corExp( 1, form = ~x+y )
> cs1Exp <- Initialize( cs1Exp, spatDat )
> corMatrix( cs1Exp )
[,1] [,2] [,3] [,4] [,5]
[1,] 1.0000000 0.7021885 0.4930687 0.3462272 0.2431167
[2,] 0.7021885 1.0000000 0.7021885 0.4930687 0.3462272
[3,] 0.4930687 0.7021885 1.0000000 0.7021885 0.4930687
[4,] 0.3462272 0.4930687 0.7021885 1.0000000 0.7021885
[5,] 0.2431167 0.3462272 0.4930687 0.7021885 1.0000000
Run Code Online (Sandbox Code Playgroud)
您的代码存在一些问题.这是更正后的版本:
library(nlme)
spatDat <- data.frame(x = c(0, 0.25, 0.5, 0.75, 1), y = c(0, 0.25, 0.5, 0.75, 1.0))
cs1Exp <- corExp(1, form = ~x+y)
cs1Exp <- Initialize(cs1Exp, spatDat)
corMatrix(cs1Exp)
[,1] [,2] [,3] [,4] [,5]
[1,] 1.0000000 0.7021885 0.4930687 0.3462272 0.2431167
[2,] 0.7021885 1.0000000 0.7021885 0.4930687 0.3462272
[3,] 0.4930687 0.7021885 1.0000000 0.7021885 0.4930687
[4,] 0.3462272 0.4930687 0.7021885 1.0000000 0.7021885
[5,] 0.2431167 0.3462272 0.4930687 0.7021885 1.0000000
Run Code Online (Sandbox Code Playgroud)