[Gstat-info] Re: Gstat-info Digest, Vol 40, Issue 6

Edzer Pebesma edzer.pebesma at uni-muenster.de
Mon Mar 30 22:22:33 CEST 2009


Try

as.formula(paste(columns[j], "~ 1"))

as first argument to variogram.
--
Edzer

Greg King wrote:
> Hi,
>
> This snippet of code probably best summarises the root of my problem;
>
>   
>> class(wind)
>>     
> [1] "SpatialPointsDataFrame"
> attr(,"package")
> [1] "sp"
>
>  > columns<-names(wind)[2:length(names(wind))]
>  > class(columns[j])
> [1] "character"
>
>   
>> columns[j]
>>     
> [1] "ugrd_0"
>
>   
>> print(columns[j])
>>     
> [1] "ugrd_0"
>
>   
>> wind.vgm=variogram(columns[j]~1,sset)
>>     
> Error: too many spatial dimensions: 162
> In addition: Warning messages:
> 1: In model.matrix.default(Terms, m) :
>   variable 'columns[j]' converted to a factor
> 2: NAs introduced by coercion
>
> Your comment is spot on with the variable being of class character (when it
> shouldn't be).  As you can see from above, I'm getting the name of a
> variable form the header column of a data frame.  So I suppose the question
> is how can I pass this into the variogram as a literal?
>
> Thanks,
>
> Greg
>
> On Mon, Mar 30, 2009 at 7:12 AM, Edzer Pebesma <
> edzer.pebesma at uni-muenster.de> wrote:
>
>   
>> Is it possible that variab is of class character, or factor? This should
>> not be the case.
>>
>> What exactly did you mean by "produce the variogram"? After which
>> command did you get an error?
>> --
>> Edzer
>>
>> Greg King wrote:
>>     
>>> I'm trying to pass a character vector and data frame into a function
>>> that performs ordinary kriging.  The function appears to pass the
>>> items in correctly, as  I can get it to report the class of (or even
>>> print) the variables in the function call.  However when used to
>>> produce the variogram, it fails.
>>>
>>> Here is the function:
>>>
>>>      gks <- function(inLat,inLon,dframe,variab) {
>>>            wind.grid <- expand.grid(lat=inLat, lon=inLon)
>>>              coordinates(wind.grid) <- ~ lat+lon
>>>            proj4string(wind.grid) <- CRS("+init=epsg:4326")
>>>            print(class(variab))
>>>            print(class(dframe))
>>>            wind.vgm=variogram(variab~1,dframe)
>>>            wind.fit=fit.variogram(wind.vgm, model=vgm(model="Lin"))
>>>
>>>       
>>  wind.kriged=krige(variab~1,dframe,wind.grid,model=wind.fit,nmax=9)
>>     
>>>            print(wind.kriged$var1.pred)
>>>      }
>>>
>>> Here it the call of the function:
>>>
>>>      gks(1,1,sset,columns[j])
>>>
>>> Here is the output showing that a character vector and dataframe have
>>> been passed in, but then the error that I don't understand...
>>>
>>>      [1] "character"
>>>      [1] "SpatialPointsDataFrame"
>>>      attr(,"package")
>>>      [1] "sp"
>>>      Error: too many spatial dimensions: 162
>>>      In addition: Warning messages:
>>>      1: In model.matrix.default(Terms, m) :
>>>        variable 'variab' converted to a factor
>>>      2: NAs introduced by coercion
>>>
>>> Any pointers gratefully received.  I'm new to creating functions in R,
>>> as you might have guessed.
>>>
>>> Thanks,
>>>
>>> Greg
>>>
>>>  Pastebot <http://sf.net/projects/pastebot/> is powered by
>>> POE<http://poe.perl.org/>
>>> .
>>>
>>>
>>> ------------------------------------------------------------------------
>>>
>>> _______________________________________________
>>> Gstat-info mailing list
>>> Gstat-info at geo.uu.nl
>>> http://mailman.geo.uu.nl/mailman/listinfo/gstat-info
>>>
>>>       
>> --
>> Edzer Pebesma
>> Institute for Geoinformatics (ifgi), University of Münster
>> Weseler Straße 253, 48151 Münster, Germany. Phone: +49 251
>> 8333081, Fax: +49 251 8339763 http://ifgi.uni-muenster.de/
>> http://www.springer.com/978-0-387-78170-9 e.pebesma at wwu.de
>>
>>
>>     
>
>   

-- 
Edzer Pebesma
Institute for Geoinformatics (ifgi), University of Münster
Weseler Straße 253, 48151 Münster, Germany. Phone: +49 251
8333081, Fax: +49 251 8339763 http://ifgi.uni-muenster.de/
http://www.springer.com/978-0-387-78170-9 e.pebesma at wwu.de



More information about the Gstat-info mailing list