###前提・実現したいこと
Rで、二次元座標空間上に位置するグループAの各点から、グループB内の最も近い点を求めて、データフレームの形で出力したいと考えています。
###発生している問題・エラーメッセージ
初心者なりにネット等で調べて、以下のようにソースコードを書きました。グループ1の座標を(x, y)、グループ2の座標を(X, Y)として、グループAの各点にもっとも近いグループB内の点を、assign関数でNX1〜5、および NY1〜5に格納することはできました。
x<-c(8, 1, 4, 4, 3) y<-c(11, 23, 31, 51, 52) X<-c(74, 20, 48, 68, 85, 78, 51, 24, 75, 59, 99, 32, 56, 71, 63) Y<-c(57, 54, 25, 38, 24, 17, 50, 40, 20, 9, 23, 22, 56, 8, 53) z<-1:length(x) for(i in z){ NX<-X[which.min((x[i]-X)^2+(y[i]-Y)^2)] assign(paste("NX", i, sep=""), NX) NY<-Y[which.min((x[i]-X)^2+(y[i]-Y)^2)] assign(paste("NY", i, sep=""), NY) }
しかし、この後、NX1〜5, およびNY1〜5に格納した数値をどのように取り出してつかえばいいのか、分かりません。以下のように、catで表示させてコピペすれば、データフレームの形で書き出せるようにはなるのですが、実際に扱うデータ数は大量であり、コピペの際に重くて止まってしまいます。
cat(paste("NX", paste(z, ",", sep=""), sep="")) NXn<-c(NX1, NX2, NX3, NX4, NX5) cat(paste("NY", paste(z, ",", sep=""), sep="")) NYn<-c(NY1, NY2, NY3, NY4, NY5) DistTable<-data.frame(x, y, NXn, NYn)
データ数が多くなっても扱えるように、オブジェクトに収納したままで動かしたいのですが、どのようにすれば良いのでしょうか?また、これ以外の方法で上記目的が達成できるのであれば、教えていただけないでしょうか?どうかよろしくお願いいたします。
###補足情報(言語/FW/ツール等のバージョンなど)
R 3.3.1 GUI 1.68 Mavericks build (7238)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/15 01:16