创建函数或for循环,以使用基本R图形生成理货标记

创建函数或for循环,以使用基本R图形生成理货标记,r,function,for-loop,graphics,R,Function,For Loop,Graphics,我正在开发一个闪亮的应用程序,它可以简单地生成理货标记。我有一个很长的脚本,可以做一些有用的工作,但我想让它在数学上更加简洁,这样我最终可以为应用程序使用简单的输入。现在,脚本如下所示: # create dataframe y=c(rep(c(10, 9), 8)) x = rep(seq(from = 0, to = 3.5, by = 0.5), each=2) d = data.frame(x, y) # Draw empty plot plot(x=NULL, y=NULL, xl

我正在开发一个闪亮的应用程序,它可以简单地生成理货标记。我有一个很长的脚本,可以做一些有用的工作,但我想让它在数学上更加简洁,这样我最终可以为应用程序使用简单的输入。现在,脚本如下所示:

# create dataframe
y=c(rep(c(10, 9), 8))
x = rep(seq(from = 0, to = 3.5, by = 0.5), each=2) 
d = data.frame(x, y)

# Draw empty plot
plot(x=NULL, y=NULL, xlim = c(0, 4), ylim = c(0,10), axes = FALSE, xlab= " ", ylab = " ")

# Begin tallies
segments(d$x[1], d$y[1], d$x[2], d$y[2])
segments(d$x[3], d$y[3], d$x[4], d$y[4])
segments(d$x[5], d$y[5], d$x[6], d$y[6])
segments(d$x[7], d$y[7], d$x[8], d$y[8])
# diagonal 1
segments(d$x[1], d$y[1], d$x[8], d$y[8])

# next tally group
segments(d$x[9], d$y[9], d$x[10], d$y[10])
segments(d$x[11], d$y[11], d$x[12], d$y[12])
segments(d$x[13], d$y[13], d$x[14], d$y[14])
segments(d$x[15], d$y[15], d$x[16], d$y[16])
# diagonal 2
segments(d$x[9], d$y[9], d$x[16], d$y[16])

# Row 2 - revalue dataframe to call upon new y values (this is a clunky step 
I'd like to eliminate as well)
y=c(rep(c(8, 7), 8))
x = rep(seq(from = 0, to = 3.5, by = 0.5), each=2) 
d = data.frame(x, y)

segments(d$x[1], d$y[1], d$x[2], d$y[2])
segments(d$x[3], d$y[3], d$x[4], d$y[4])
segments(d$x[5], d$y[5], d$x[6], d$y[6])
segments(d$x[7], d$y[7], d$x[8], d$y[8])
# diagonal 1
segments(d$x[1], d$y[1], d$x[8], d$y[8])
。。。以此类推,总共5行。生成此绘图的:

我想用for循环或函数自动生成绘图,但我唯一的尝试(承认在数学上有缺陷)是生成连接线段,我不知道如何开始自动生成交叉线:

plot(x=NULL, y=NULL, xlim = c(0, 4), ylim = c(0,10), axes = FALSE, xlab= " ", ylab = " ")

for( i in 1:16 ) {
  segments(d$x[i], d$y[i], d$x[i+1], d$y[i+1])
}

我肯定我只是把问题组织错了。这是一个轻浮的编码项目,但任何建议都将不胜感激

这将绘制1个理货标记:

sapply(c(1,3,5,7), function(i){ segments(d$x[i], d$y[i], d$x[i+1], d$y[i+1]) })
segments(d$x[1], d$y[1], d$x[8], d$y[8]) # for the diagonals

然后,生成其他计数标记(一个具有两个参数的函数,delta_x,delta_y)是一个转换的问题。

nice-从您的sappy函数中,我可以用
y=c(rep(c(10,9),8),rep(c(8,7),8),rep(c(6,5),8),rep(c(4,3),8),rep(c(2,1),8))x=rep(rep)(rep(seq(from=0,to=3.5,by=0.5),各=2),5)d=data.帧(x,y)图(x=NULL,y=NULL,xlim=c(0,4),ylim=c(0,10),轴=FALSE,xlab=“”,ylab=“”)s