関数を2つ

A<-c(10,3,2,4)
# Aの定義域は1,2,3,4
# Aの値域は、2,4,3,10
B<-c(3,3,2,4,1,4,2,2,2,1)
C<-A[B]
C
> C
 [1]  2  2  3  4 10  4  3  3  3 10
  • というような操作があった
  • ベクトルAがある。ベクトルは第i要素をある値に対応付けているので、1,2,...をa1,a2,...に対応づけるようなもの
  • 1,2,...がこのベクトルの表す「関数」の定義域で、a1,a2,...が値域として
  • このベクトルの表す「関数」の定義域を値域とする別のベクトルBがあって
  • AとBとで表されるCがある…
  • なぜか知らないけれど、ふっとわからない感じがした
  • mapping として、ベクトルの代わりに関数を使うと、わかる感じが強い
  • それは単なる個人の嗜好?
x<-seq(from=0,to=10,by=0.01)
y<-dchisq(x)

z<-y^2+sinh(y)

library(rgl)

plot3d(x,y,z)

f1<-function(x){
	dchisq(x)
}
f2<-function(y){
	y^2+sinh(y)
}

z<-f2(f1(x))

plot(x,z)
  • ベクトルに関する「関数の合わせ技」を行列に拡張する
    • Rでは行列がベクトル(に番地が振られたもの)だから、当然か
x<-1:4
xx<-expand.grid(x,x)

A<-matrix(1:length(xx[,1]),length(x),length(x))

B<-matrix(sample(1:4,10,replace=TRUE),ncol=2)

A[B]

A
B
A[B]
> A
     [,1] [,2] [,3] [,4]
[1,]    1    5    9   13
[2,]    2    6   10   14
[3,]    3    7   11   15
[4,]    4    8   12   16
> B
     [,1] [,2]
[1,]    3    1
[2,]    3    3
[3,]    3    1
[4,]    3    1
[5,]    2    4
> A[B]
[1]  3 11  3  3 14
  • では、アレイに一般化…
k<-5
xxx<-expand.grid(rep(list(x),k))
A<-array(1:length(xxx),rep(length(x),k))
n<-6
B<-matrix(sample(1:4,k*n,replace=TRUE),ncol=k)
A[B]
  • ここで、ベクトルの添え字を連続的パラメータに置き換えたりしているが、これは、朝永語録『ディラックの理論では、連続的な変域を持つパラメタqを添え字とするX_qといった軸を用いることも可能なのです。(じつを言うとこのゆおな考え方を数学者はきらうのですが、物理学者にとってはたいへん便利な考え方なのです。)』(数学セミナー2012年6月号 時空と偶然第2回 からの孫引き)、に通じる話、か。