Преобразовать координаты сетки x и y в координаты начальной и конечной ячейки x и y - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть x и y координаты сетки (начальные координаты ячеек сетки):

x.coords <- c(-12,-2.2,7.8,17.8,28.8)
y.coords <- c(-37.5,-27.5,-17.5)

И я хочу создать data.frame, который определяет для каждой ячейки в этой сетке своиxstart, ystart, xend и yend координаты.

Таким образом, в случае этого примера результирующее data.frame будет:

data.frame(xstart = c(-12,-12,-2.2,-2.2,7.8,7.8,17.8,17.8),
           ystart = c(-37.5,-27.5,-37.5,-27.5,-37.5,-27.5,-37.5,-27.5),
           xend = c(-2.2,-2.2,7.8,7.8,17.8,17.8,28.8,28.8),
           yend = c(-27.5,-17.5,-27.5,-17.5,-27.5,-17.5,-27.5,-17.5))

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

петли не нужны / применить

x.coords <- c(-12,-2.2,7.8,17.8,28.8)
y.coords <- c(-37.5,-27.5,-17.5)

x.start = x.coords[1:length(x.coords)-1]
y.start = y.coords[1:length(y.coords)-1]
x.end   = x.coords[2:length(x.coords)]
y.end   = y.coords[2:length(y.coords)]

data.frame(
  xstart = rep( x.start, each = length( y.start ) ),
  xend   = rep( x.end, each = length( y.end ) ),
  ystart = rep( y.start, times = length( x.start ) ),
  yend   = rep( y.end, times = length( x.start ) )
)

#   xstart xend ystart  yend
# 1  -12.0 -2.2  -37.5 -27.5
# 2  -12.0 -2.2  -27.5 -17.5
# 3   -2.2  7.8  -37.5 -27.5
# 4   -2.2  7.8  -27.5 -17.5
# 5    7.8 17.8  -37.5 -27.5
# 6    7.8 17.8  -27.5 -17.5
# 7   17.8 28.8  -37.5 -27.5
# 8   17.8 28.8  -27.5 -17.5
0 голосов
/ 07 декабря 2018

Похоже:

data.frame(xstart = unlist(lapply(head(x.coords,-1),function(x) rep(x,length(y.coords)-1))),
           ystart = rep(head(y.coords,-1),length(x.coords)-1),
           xend = unlist(lapply(x.coords[-1],function(x) rep(x,length(y.coords)-1))),
           yend = rep(y.coords[-1],length(x.coords)-1))
...