私は非常に新しいR
ので、これが非常に基本的な質問である場合はご容赦ください。以下の手順を使用して、うまくいけばより意味のある質問を編集しました。
d
このようなデータフレームがあります
SAMPLE <-c("blueberry", "broccoli")
OPT1 <-c("apple", "beef")
OPT2 <-c("oatmeal", "bacon")
RESPONSE <- c("oatmeal", "beef")
d <- data.frame(SAMPLE,OPT1,OPT2, RESPONSE)
新しいデータの NA の列を追加
d$OPT1.D <- rep("NA",nrow(d));
と距離行列dist
X <-c("blueberry", "beef", "oatmeal", "broccoli")
blueberry <-c("0", "0.17", "0.09", "0.21")
beef <-c("0.15", "0", "0.979", "0.75")
oatmeal <- c("0.09", "0.375", "0", "0.71")
broccoli <- c("0.25", "0.671", "0.45", "0")
dist <- data.frame(X,blueberry,beef, oatmeal, broccoli)
dist
したがって、 ford$RESPONSE
とで行/列の一致を見つけたいと思いますd$SAMPLE
。の新しい列でd$OPT1.D
は、最初のエントリは である必要があります0.09
。これは、 の「オートミール」と「ブルーベリー」の間の距離dist
です。2 番目のエントリは0.671
、「牛肉」と「ブロッコリー」の間の距離です。
これがより理にかなっていることを願っていますか?以下のコードを使用しましたd$OPT1.D <- dist[cbind(d$RESPONSE, d$SAMPLE)]
が、数値ではなくテキストが返されました。どうもありがとう。
全体として、これはかなり簡単な操作のように思えますが、少し検索した後、これが FOR ループまたは data.table のようなパッケージによって実行されるのが最適かどうかわかりません。アドバイスをいただければ幸いです。