В поисках Релпа я нашел похожий вопрос (хотя и не такой широкий). Он просто попросил найти локальные максимумы, но обобщение на другие случаи не должно быть слишком сложным. Опрашивающий предоставил набор данных:
require(MASS)
topo.lo <- loess(z ~ x * y, topo, degree = 1, span = 0.25,
normalize = FALSE)
topo.mar <- list(x = seq(0, 6.5, 0.1), y = seq(0, 6.5, 0.1))
new.dat <- expand.grid(topo.mar)
topo.pred <- predict(topo.lo, new.dat)
## draw the contour map based on loess predictions
library(rgl)
persp3d(topo.mar$x, topo.mar$y, topo.pred, shade=0.5, col="blue")
И получил этот ответ (который, по общему признанию, не рассчитывает производные, а числовые производные являются лишь первыми отличиями), что и используется в этом тесте:
hasmax <- function(mtx, x, y) if( (mtx[x,y] > mtx[x,y-1]) &
(mtx[x,y] > mtx[x,y+1]) &
(mtx[x,y] > mtx[x-1,y]) &
(mtx[x,y] > mtx[x+1,y]) ) {return(TRUE ) } else {return(FALSE)}
for(i in 3:(dim(topo.pred)[1] -4)) {
for(j in 3:(dim(topo.pred)[2]-4) ) {
if( hasmax(topo.pred, i , j) ){print(c(topo.mar$x[i],topo.mar$y[j]))} }}
Я публикую его с небольшим изменением, потому что это был мой ответ: -)
Я думаю, что могут быть пакеты, которые имеют дело с пространственными наборами данных, но я ' Я не особенно знаком, поэтому вы можете искать в представлении задач CRAN.
Метод getItem
в спецификации WebStorage явно возвращает null
, если элемент не существует:
... Если данный ключ не существует в списке, связанном с объектом, то этот метод должен возвращать значение null. ...
Итак, вы можете:
if (localStorage.getItem("infiniteScrollEnabled") === null) {
//...
}
См. Этот связанный вопрос:
Лучшим и Самым Безопасным путем я могу предложить, это,
if(Object.prototype.hasOwnProperty.call(localStorage, 'infiniteScrollEnabled')){
// init variable/set default variable for item
localStorage.setItem("infiniteScrollEnabled", true);
}
Это проходит через ESLint's no-prototype-builtins
правило.