昨日、ループを使用せずに、それぞれがユーザー指定の色を持つ複数の (水平っぽい) 線をプロットする方法について質問しました。
提案された関数 matplot() を使用して、以下のプロットに示されている短い垂直線を関連するコードでプロットしようとしました。
ci = matrix(1:30, nrow=3, byrow=T)
ci=list(rbind(ci[1,], ci[1,]+2),
rbind(ci[2,], ci[2,]+2),
rbind(ci[3,], ci[3,]+2))
x = rbind(1:10, 1:10)
plot(-5, xlim=c(1,10), ylim=c(1,32))
invisible(mapply(matlines, x=list(x), y=ci,
col=c("red","blue","black"),
lty = 1))
これはすべて良いです。ただし、このコードを関数内にラップしようとしています。オプションの引数のリストを入力して、mapply/matlines に渡すことができるようにしたいと考えています。mapply() で引数 MoreArgs を使用しようとしましたが、役に立ちませんでした。MoreArgs が取る引数は、他の引数と同じように扱われていないようです。最初のコードでわかるように、リストの各項目は異なる色になりますが、リスト args.ci 内に col を配置すると、3 つの色がリストの各項目内で再利用されます。引数に複数の値がある場合、各値がリストの1つの項目に適用されるように、この問題を解決する方法があるのではないかと思います。ありがとう!
args.ci = list(col=c("red","blue","black"), lty=1:3)
plot(-5, xlim=c(1,10), ylim=c(1,32))
invisible(mapply(matlines, x=list(x), y=ci,
MoreArgs = args.ci))