的R - 重新排序列的某些部分在数据帧

问题描述:

我想创建坐标的数据帧,其中列出以下顺序点:的R - 重新排序列的某些部分在数据帧

enter image description here

即从左到右第一排,然后从右到左第二排等

我可以这样做产生的所有点:

x_val <- -3:3; x_len <- length(x_val) 
y_val <- -2:2; y_len <- length(y_val) 
expand.grid(x=-x_lim:x_lim, y=y_lim:-y_lim) 

enter image description here

可是所以我想这是不正确的顺序:

df <- lapply(1:y_len, function(i){ 
    data.frame(x=(-1)^(1+i)*x_val, 
       y=rep(-y_val[i],x_len))}) 

df <- do.call("rbind", df) 

虽然它的工作原理,是有一个更清洁的方式来实现我想要做什么?谢谢。

+0

非常有趣的问题:投票了! – SabDeM

我不知道这是否是清洁的,但这里有云:

x_val <- -3:3; x_len <- length(x_val) 
y_val <- -2:2; y_len <- length(y_val) 
n <- x_len*y_len 
x <- rep(c(x_val, rev(x_val)), n, length.out = n) 
y <- sort(rep(c(y_val), n, length.out = n), decreasing =TRUE) 
df <- data.frame(x, y)