我想创建一个坐标数据框,按以下顺序列出点:
即。在第一行中从左到右,然后在第二行中从右到左,等等。
我可以通过这样做来生成所有点:
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)
但它的顺序不正确,所以我尝试了这个:
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 :(得分: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)