[R-sig-Geo] Use of lookup table to create new matrix

Robert J. Hijmans r.hijmans at gmail.com
Thu Feb 4 18:59:43 CET 2010


Ian,

As you need interpolation, perhaps the loess function is useful for
you  ((although I wonder whether you need a lookup table. Wouldn't you
rather use an existing function to predicts svp from temp))?

tab = data.frame(temp=-10:9,svp= 1:20)
mat = matrix(20:-29, byrow=T, nrow=5)/2
mat

model = loess(svp~temp, data=tab)
mat2 = predict(model, as.vector(mat))
dim(mat2) = dim(mat)
mat2

# only matching integers:
m = cbind(as.vector(mat), 1:length(mat))
m = merge(m, tab, by=1, all.x=T)
m = m[order(m[,2]), 3]
dim(m) = dim(mat)
m


Robert

On Thu, Feb 4, 2010 at 1:12 AM, Ian McCallum <mccallum at iiasa.ac.at> wrote:
> Greetings All,
> Firstly - thanks for previous answers on exporting to asciigrid!
>
> Now i have a matrix (grid) of temperature,
> and a lookup table of temperature and svp.
>
> I would like to create a new matrix with corresponding svp values.
>
> This is relatively straightforward in a GIS - but i have not found a way in R.
> Ideally it would also interpolate between values in the lookup table.
> Options like merge, cbind, may work??
> Without looping would be ideal.
>
> any ideas?
> thanks!
> Ian
>
> # test matrix
> mat = matrix(-49.5:50,10,10)
>
> # test lookup table
> temp = -10:9
> svp = 1:20
> tab = data.frame(temp,svp)
>
>
> ___________________________________________
>
> Ian McCallum
> Forestry Program
> International Institute for Applied Systems Analysis
> Schlossplatz 1, A-2361 Laxenburg, Austria
> Phone: +43 2236 807-328
> Fax: +43 2236 807-599 or 71313
> E-mail: mccallum at iiasa.ac.at
> Web: http://www.iiasa.ac.at/Research/FOR/
> ___________________________________________
>
>        [[alternative HTML version deleted]]
>
> _______________________________________________
> R-sig-Geo mailing list
> R-sig-Geo at stat.math.ethz.ch
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>



More information about the R-sig-Geo mailing list