call() eval() 関数

  • call()関数は、関数名とその引数をとって、その実行結果を把握しておく。たとえば
> N<-3
> x<-runif(N)
> y<-x+runif(N)
> 
> z<-call('plot',x,y,type='b',col='blue',xlab='x',ylab='y')
> z
plot(c(0.41304575977847, 0.429341460578144, 0.570435442496091
), c(0.611615137895569, 0.54414407373406, 1.22748626722023), 
    type = "b", col = "blue", xlab = "x", ylab = "y")
> 
  • eval()は、そのようにして格納した「処理」を実行する関数
par(mfcol=c(1,3))
N<-3
x<-runif(N)
y<-x+runif(N)

z<-call('plot',x,y,type='b',col='blue',xlab='x',ylab='y')
z
eval(z)
N<-100
x<-runif(N)
y<-x+runif(N)
#この段階でx,yは書き換わったけれど、zの中身は古いx,yのデータなので、次のeval()は少ない点の青いグラフ
eval(z)

z<-call('plot',x,y,type='b',col='red',xlab='x',ylab='y')
#ここへきて、新しいx,yになったので、次のeval()は多い点の赤いグラフ
eval(z)