私は、情報を含むデータベースから座標情報を引き出すパッケージ固有の関数(Red :: records)を使って、種名のデータフレーム内の各種のGPS座標情報を取得しようとしています種の分布について。R:Forループコピーエラー
私はforループ反復がnrow(名)であり、以下に構成されており、機能レコードは緯度/経度座標を返す:このループを実行した後
for(i in 1:iterations){
gbif[i,1] <- names[i,] ## grab names
try(temp1 <- records(names[i,]))
try(temp1$scientificName <- names[i,])
try(temp2 <- merge(gbif, temp1, by.x="V1", by.y="scientificName"))
datalist[[i]] <- temp2
}
を、Iは、種のデータを取得することができる午前;ただし、ネームリストと適切にマージされません。たとえば、呼び出しレコード( "Agyneta flibuscrocus")は5つの固有の緯度/経度座標を正しく返しますが、呼び出しレコード(Agyneta mongolica)は0レコードのエラーを生成します(これはオンラインでチェックされたときに各種に対して有効です)。
このループの後、私が使用して単一のデータフレームに得られたレコードのすべてをバインドします
dat = do.call(rbind, datalist) ## merge all occurrence data from GBIF into
one data frame
dat <- unique(dat)
私は、このデータフレームを検証するために行くとき、私は次のサンプルデータを取得:
Agyneta flibuscrocus -115.58400 49.72
Agyneta flibuscrocus -117.58400 51.299
...
Agyneta mongolica -115.58400 49.72
Agyneta mongolica -117.58400 51.299
これらの誤った複製は、残りの200の名前でも繰り返されます。メモとして、データベースから0の結果を生成するレコードに実行された場合、コードは実行されないため、tryステートメントですべてをラップしました。
私はここで非常に明白な何かを見落としているように感じますか?
再生可能なデータ&コード:
install.packages("red")
library(red)
names = data.frame("Acantheis variatus", "Agyneta flibuscrocus", "Agyneta
mongolica", "Alpaida alticeps", "Alpaide venilliae", "Amaurobius
transversus", "Apochinomma nitidum")
iterations = nrow(names)
datalist = list()
temp1 <- data.frame() ## temporary data frame for joining occurrence data
from GBIF
for(i in 1:iterations){
gbif <- names[i,] ## grab name
try(temp1 <- records(gbif))
try(temp1$V1 <- gbif)
datalist[[i]] <- temp1
}
dat = do.call(rbind, datalist)
記載されているようにいくつかの例のデータを入力してください[ここ](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)。 –
@tobiasegli_te私の悪い、私をラインに入れてくれてありがとう:) –