[R] akima interp results to zero with less than 10 values

PIKAL Petr petr@p|k@| @end|ng |rom prechez@@cz
Thu Jan 26 15:35:24 CET 2023


Dear all

I have this table 
> dput(mat)
mat <- structure(c(2, 16, 9, 2, 16, 1, 1, 4, 7, 7, 44.52, 42.8, 43.54, 
40.26, 40.09), dim = c(5L, 3L))

And I want to calculate result for contour or image plots as I did few years
ago.

However interp does not compute the z values and gives me zeros in z matrix.
library(akima)

> interp(mat[,1], mat[,2], mat[, 3], nx=5, ny=5)
$x
[1]  2.0  5.5  9.0 12.5 16.0

$y
[1] 1.0 2.5 4.0 5.5 7.0

$z
     [,1] [,2] [,3] [,4] [,5]
[1,]    0    0    0    0    0
[2,]    0    0    0    0    0
[3,]    0    0    0    0    0
[4,]    0    0    0    0    0
[5,]    0    0    0    0    0

With the example from help page if less than 10 values are used, the result
is also zero
interp(akima$x[1:9], akima$y[1:9], akima$z[1:9], nx=5, ny=5)

but with 10 or more values the result is correctly calculated
interp(akima$x[1:10], akima$y[1:10], akima$z[1:10], nx=5, ny=5)
$x
[1]  0.0000  6.1625 12.3250 18.4875 24.6500

$y
[1]  1.24  5.93 10.62 15.31 20.00

$z
     [,1]     [,2]     [,3]     [,4]     [,5]
[1,]   NA       NA       NA       NA 34.60000
[2,]   NA       NA 27.29139 27.11807 26.60971
[3,]   NA 19.81371 19.63614 19.12778 18.61943
[4,]   NA 14.01443 10.66531 11.13750 10.62914
[5,]   NA       NA       NA       NA       NA

Help page says
x, y, and z must be the same length (execpt if x is a
SpatialPointsDataFrame) and may contain no fewer than ***four*** points.

So my understanding was that 5 poins could be used but I am obviously wrong.
Is it a bug in interp or in the documentation or is it my poor understanding
of the whole matter.

Best regards
Petr



More information about the R-help mailing list