Теперь, когда я успешно, благодаря @Phil, преобразовал мой SpatialLinesDataFrame в список объектов psp, мне нужно использовать функцию SpatStat pointsOnLines для создания точек вдоль каждого элемента списка (например, линии) и иметь отметки линия переносится на каждый набор точек.
Я новичок в lapply, но, видя, как он использовался при преобразовании пространственного кадра данных в список объектов psp, я считаю целесообразным использовать его для применения функции pointsOnLines к каждому списку? Увы, у меня это не работает. Помощь!
Продолжая обычный пример ....
library("maptools")
library("rgdal")
library("spatstat")
base_dir <- system.file("shapes", package = "maptools")
fylk <- readOGR(base_dir, "fylk-val")
is(fylk)
out <- lapply(fylk@lines, function(i) { lapply(i@Lines, as.psp) })
out
dat <- fylk@data
for (i in seq_along(1:nrow(dat))) {
out[[i]] <- lapply(out[[i]], "marks<-", value = dat[i, , drop = FALSE])
}
for(i in seq_along(out)){
abc[[i]]<-(lapply(out[[i]],function(i){pointsOnLines(out[[i]],eps=10)}))
}
Это не работает, и я не могу понять, почему. Я использовал [[]] как список списков?
Предложения новичку?
abc
и передаетеout[[i]]
внутри анонимной функции. Помните, чтоi
становится объектом, который будет использоваться при передаче вfunction()
. Кроме того, вы повторно используетеi
в циклахfor
иlapply
. - person Parfait   schedule 27.11.2019linnet
. Тогда у вас будет прямой доступ к функциям spatstat для создания точек в сети и т. Д. Посмотрите на функции, которые называются чем-то с помощью lpp, и строки в spatstat. Лучшая справочная информация - это глава 17 книги spatstat. Пишу с телефона, поэтому не могу найти для вас все имена. Посмотрите файлы справки дляlinnet
иlpp
и ссылки на другие функции в них. Удачи. - person Ege Rubak   schedule 27.11.2019