そこで、さまざまなポートの座標を点でプロットするマッピング関数を作成しています。ユーザーがラベル付けするポートを選択して、ラベルの位置を変更できる機能を作成したいと考えています。
さまざまなポートとその座標を次に示します。
Labels Lon Lat
1 Halifax, NS -63.59341 44.68068
2 St. John's, NL -52.73304 47.59341
3 Saint John, NB -66.05236 45.27925
4 Portland, ME -70.24435 43.68068
5 Woods Hole, MA -70.68068 41.62832
6 Nuuk, Greenland -51.75049 64.17453
7 Boston, MA -71.08727 42.36652
そして私の機能:
port.label <- function (pos1, cex1 = 0.6, offset1 = 0.2, col1 = "deeppink") {
port.file<-read.csv("V:/Science/Finalised Map Files/Ports.csv")
Lon <- port.file$Lon
Lat <- port.file$Lat
Lab <- paste(port.file$Lab)
a <- locator()
ay <- unlist(a[2])
aylab <- sapply (ay, function (x) which.min (abs (x - Lat)))
b <- for (i in (1:length (aylab))) {
text (x = Lon [aylab[i]], y = Lat [aylab[i]], labels = Lab [aylab[i]],
pos = pos1, cex = cex1, offset = offset1, col = col1)
}
}
今、私はそれを実行しようとすると: port.label(pos1=c(1,2,3,4))
4 つの点をクリックした後、最初の値 (1) のみを使用してラベルを返します。したがって、最初の値のみを取得しています。クリックされたポートの数に関連するように pos1 の長さを事前に設定しようとしましたが、これも役に立ちませんでした。
ベクトル全体ではなく、最初の pos1 値のみを取る理由についてのアイデアはありますか? ありがとう。