私は最近 Common Lisp を学んでおり、訓練を受けたプログラマーではありませんが、とても楽しんでいます。そのため、R コードを別の方法で記述したいことに気付きました。たとえば、次のコードは、Verzani Simple R online bookのコードを再加工したものです。
with(list(p=0.5, m=50, n=20, alpha=0.1),
with(list(phat=rbinom(m,n,p)/n, zstar=1-alpha/2),
with(list(SE=sqrt((1-phat)*phat/n)),{
matplot(rbind(phat-SE*zstar,phat+SE*zstar),
rbind(1:m,1:m), type='l',
lty=1)
abline(v=p)})))
これは R で書くための合理的で合理的な慣用的な方法ですか、それとも別の言語からのアプローチをシューホーニングするだけの場合ですか? 個人的には、変数を一度バインドすれば、代入や一般的なルック アンド フィールを使用する必要がない点が気に入っています。
Verzani ブックのコードは比較のために次のとおりです (Dason によって提案された変更が加えられています)。
local({
m=50;
n=20;
p=.5;
phat=rbinom(m,n,p)/n
SE = sqrt(phat*(1-phat)/n)
alpha = 0.10;zstar= qnorm(1-alpha/2)
matplot(rbind(phat-zstar*SE,phat+zstar*SE), rbind(1:m,1:m),type="l",lty=1)
abline(v=p)})
編集: Spacedman が指摘したように、これは私のバージョンよりも簡潔であり、R が LET* のようなものを Lisp に持っていれば大幅に改善されるでしょう。誰かがそれを簡潔に達成できる方法を知っている場合は、コメントしてください。