[英]R Lapply PointsOnLines thru a list of psp objects
現在,由於@Phil,我已經成功地將SpatialLinesDataFrame強制轉換為psp對象列表,因此,我需要使用SpatStat函數pointsOnLines沿每個列表項(即Line)創建點,並在其上標記線轉移到每組點。
我不是lapply的新手,但是看到它是如何在將spatialdataframe轉換為psp對象列表時使用的,我認為適合將其應用於每個列表上的pointsOnLines函數嗎? ,這對我沒有用。 救命!
繼續fylk示例。
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)}))
}
這行不通,而且我無法解決原因。 我用[[]]是列表列表嗎?
對新手的建議?
假設最后一個lapply
是您的問題,請考慮使用嵌套的lapply
將結果分配給abc
:
abc <- lapply(out, function(o)
lapply(o, function(x) pointsOnLines(x, eps=10))
# EQUIVALENTLY:
# lapply(o, pointsOnLines, eps=10)
)
並根據文檔進行繪圖,請在out
和abc
列表之間使用Map
運行elementwise循環(將包裝器包裝為mapply
)。
一副psp和ppp:
plot(out[[1]], main="")
plot(abc[[1]], add=TRUE, pch="+")
多個psp和ppp對:
proc_plot <- function(X, Y) {
plot(X, main="")
plot(Y, add=TRUE, pch="+")
}
result <- Map(proc_plot, out, abc)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.