問題のコードを作成するためのヒントを教えてもらえますか?ステップバイステップ私はいくつかの問題を解決することができますが、私は自分の仕事をスピードアップするためにループを書くことと自分自身の機能から始める方法を知らない。以下、小さなデータセットのために私の最後の問題を見ることができますが、私は非常に簡単ですが、問題は大きなデータセット(30個以上の "diff"カラムを作成する必要がある場合)です。 手動処理を高速化するコードの作成方法
はあなたの時間をありがとうございました:)id=c(0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0)
distance=c(43.59304, 152.66197, 208.00968, 272.92662, 380.79429,
469.62269, 556.72725,734.29125, 796.42570, 873.09448, 1040.64550)
c=data.frame(id,distance)
c
c[paste("diff",1:3, sep="")]=NA
c$diff1=abs(c[c$id>0,][1,2]-c$distance)
c$diff2=abs(c[c$id>0,][2,2]-c$distance)
c$diff3=abs(c[c$id>0,][3,2]-c$distance)
c
c$min=apply(c[,c(3:5)], 1,FUN=min)
編集:
は基本的に私は、IDと各ポイントの最短距離を計算したい= 0 ID = 1と最も近い点まで。 データ "距離"は各点の線に沿った距離です。真ん中の部分は、2つの入力ベクトルのすべてのペアを(あなたの関数、すなわち絶対差)関数を適用する、outer
を用いて行うことができること
Picture for better understening
具体的な問題を説明し、私たちがそれを解読することを期待せず、変数 'c'を決して指定しないでください;) –
@Moody_Mudskipperコメントも追加してください。あなたの質問にお応えするために[完全な最小限の再現可能な例を提供する](http://stackoverflow.com/help/mcve)を提供すると、私たちはあなたを助けることができるでしょう。私たちは仕事をして、あなたの質問に答えることができるかもしれないことをあなたに示すために使うことができます。私は[私は良い質問をしますか?](https://stackoverflow.com/help/how -聞く、質問する)。 –