for(i in 1:100)
{
for(j in 1:100)
{
hdist <- rgeos::gDistance(xySpatialLines[[i]], xySpatialLines[[j]], byid=FALSE, hausdorff=TRUE)
distances[i,j] <- dist
}
}
Есть ли способ, чтобы упростить J цикл, чтобы получить что-то вроде этого:Как упростить FOR петли в R?
for(i in 1:100)
{
distances[i,j] <- lapply(???) # or sapply?
}
UPDATE:
Данные хранятся в xySpatialLines[[i]]
- это SpatialLines объекты:
library(sp)
xySpatialLines <- vector(mode = "list", length = 2)
x1 <- c(1,4,5,3,2)
y1 <- c(2,5,3,6,7)
x2 <- c(4,4,6,3,2)
y2 <- c(8,5,2,6,1)
xy1 <- cbind(x1,y1)
xy2 <- cbind(x2,y2)
xy1.sp = sp::SpatialPoints(xy1)
xy2.sp = sp::SpatialPoints(xy2)
spl1 <- sp::SpatialLines(list(Lines(Line(xy1.sp), ID="a")))
spl2 <- sp::SpatialLines(list(Lines(Line(xy2.sp), ID="b")))
xySpatialLines[[1]] = spl1
xySpatialLines[[2]] = spl2
Посмотрите на 'mapply' (многомерный' lapply'). И вы всегда можете использовать двойной 'lapply()' –
@Richard Scriven: Моя идея состоит в том, чтобы преобразовать этот двойной цикл в foreach()% dopar% {# ... mapply} O вы бы предложили использовать double lapply? Я ищу эффективное вычислительное решение –
@Richard Scriven: см. Обновление –