それで、私は R を 2 年間オンとオフを使い分けて、ベクトル化の全体的なアイデアを得ようとしてきました。私は調査の複数の回答セットからのダミー変数をよく扱っているので、このケースで学ぶのは興味深いと思いました。
アイデアは、複数の回答からダミー変数に (そして戻る) ことです。たとえば、「これらの 8 つの異なるチョコレートのうち、あなたのお気に入りのチョコレートはどれですか (3 つまで選択してください) ?」
場合によっては、これをダミー変数 ( 「コート ドール」が好きな人は1、嫌いな人は0 ) としてコーディングし、オプションごとに 1 つの変数を使用し、場合によってはカテゴリ ( 「コート ドール」が好きな人を1 "、「Lindt」が好きな人には2など)、3 つの選択肢に対して 3 つの変数があります。
したがって、基本的には、行が次のようなマトリックスになります
1,0,0,1,0,0,1,0
または、次のような行を持つマトリックス
1,4,7
そして、前述のように、アイデアはあるものから別のものへと移動することです。これまでのところ、各ケースのループ ソリューションと、ダミーからカテゴリに移行するためのベクトル化されたソリューションが得られました。この問題と、カテゴリーからダミーへのステップのベクトル化されたソリューションについてさらに掘り下げていただければ幸いです。
ダミーからダミーではない
vecOrig<-matrix(0,nrow=18,ncol=8) # From this one
vecDest<-matrix(0,nrow=18,ncol=3) # To this one
# Populating the original matrix.
# I'm pretty sure this could have been added to the definition of the matrix,
# but I kept getting repeated numbers.
# How would you vectorize this?
for (i in 1:length(vecOrig[,1])){
vecOrig[i,]<-sample(vec)
}
# Now, how would you vectorize this following step...
for(i in 1:length(vecOrig[,1])){
vecDest[i,]<-grep(1,vecOrig[i,])
}
# Vectorized solution, I had to transpose it for some reason.
vecDest2<-t(apply(vecOrig,1,function(x) grep(1,x)))
ダミーからダミーではない
matOrig<-matrix(0,nrow=18,ncol=3) # From this one
matDest<-matrix(0,nrow=18,ncol=8) # To this one.
# We populate the origin matrix. Same thing as the other case.
for (i in 1:length(matOrig[,1])){
matOrig[i,]<-sample(1:8,3,FALSE)
}
# this works, but how to make it vectorized?
for(i in 1:length(matOrig[,1])){
for(j in matOrig[i,]){
matDest[i,j]<-1
}
}
# Not a clue of how to vectorize this one.
# The 'model.matrix' solution doesn't look neat.