说我有一些由2个数字组成的序列:
seq <- c(0, 1, 1, 1, 0, 0)
假设我想通过以下方式将其绘制到图形中:
我的图(x,y)从(0,0)开始,到(1,0)有一条直线。 然后,该序列开始起作用: 如果数字为0,则以1坐标向左转;如果数字为1,则以1坐标向右转。 因此,对于示例序列,我从以下内容开始:
(0, 0) -> (1, 0) -> (1, 1) -> (1, 2) -> (1, 1) -> (1, 0) etc.
如果您想了解我左右转弯的意思,最好画出这个。
我如何将这些点计入情节?有提示吗?
答案 0 :(得分:1)
x = c(0, 1, 1, 1, 0, 0)
m = cbind(x = c(0, 1),
y = c(0, 0))
flag_xy = 1 #Track whether to add to x- or y- coordinate
for (i in x){
flag_direction = diff(tail(m, 2)) #Track which way the line is facing
if (i == 0){
if (flag_xy == 1){
m = rbind(m, tail(m, 1) + c(0, flag_direction[,1] * 1))
} else{
m = rbind(m, tail(m, 1) + c(flag_direction[,2] * -1, 0))
}
flag_xy = flag_xy * -1
} else{
if (flag_xy == 1){
m = rbind(m, tail(m, 1) + c(0, flag_direction[,1] * -1))
} else{
m = rbind(m, tail(m, 1) + c(flag_direction[,2]* 1, 0))
}
flag_xy = flag_xy * -1
}
}
graphics.off()
plot(m, asp = 1)
lines(m)
m
# x y
# 0 0
# 1 0
#[2,] 1 1
#[2,] 2 1
#[2,] 2 0
#[2,] 1 0
#[2,] 1 -1
#[2,] 2 -1