r - 仅重新排序数据框中列的某些部分

时间:2015-07-19 19:33:29

标签: r dataframe

我想创建一个坐标数据框,按以下顺序列出点:

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)

虽然它有效但有没有更清洁的方法来实现我想做的事情?感谢。

1 个答案:

答案 0 :(得分:1)

我不确定它是否更干净,但是在这里:

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)