にデータフレームに例を追加:緯度/ long型から関数からの戻り複数のベクターと
library(tidyverse)
library(ggmap)
latLong <- data.frame(long= c(78.0422, -0.1246, 131.035904, 122.3493),
lat = c(27.1750, 51.5007, -25.344646, 47.6205),
name = c("Taj Mahal", "Big Ben", "Uluru", "Space Needle"))
アドレスの詳細は逆ジオコード検索によって発見されました。 この関数はデータフレームを返します。
results <- revgeocode(c(78.0422, 27.1750), output = "more")
我々は、データフレームに結果 バックを書き、 緯度及び経度を含むベクターに関数を適用することによって、結果 の任意の大きなセットを返したいです。
単一の値を戻したい場合は、mapplyを使用できます。
getLocality <- function(long, lat) {
locality <- revgeocode(c(long, lat), output = "more")
locality <- locality$locality
return(locality)
}
localities <- mapply(getLocality, latLong$long, latLong$lat)
私たちは、新しい列としてデータフレーム に値を返す関数を使用することができます。
latLong$locality <- mapply(getLocality, latLong$long, latLong$lat)
また、dplyrを使用することもできます。
latLong <- latLong %>%
rowwise() %>%
mutate(dplyrLocality = getLocality(long, lat))
これまでに出力さ:
|long |lat |name |locality |dplyrLocality |
|--------|---------|------------|--------------|--------------|
|78.0422 |27.17500 |Taj Mahal |Agra |Agra |
|-0.1246 |51.50070 |Big Ben |London |London |
|131.0359|-25.34465|Uluru |Petermann |Petermann |
|122.3493|47.62050 |Space Needle|Hulunbeier Shi|Hulunbeier Shi|
私たちはに戻って、結果セットのすべてのを書きたい場合は?
getAddress <- function(long, lat) {
address <- revgeocode(c(long, lat), output = "more")
return(address)
}
はクリーン/最も効率的な/最も簡単には戻って、複数の新しい列として LatLongブログのデータフレームにデータフレーム全体を書き込むための方法を理解することは何ですか?あなたはそれを行うためのいくつかの代替方法を与えることができますか、おそらく適用家族を使用するものと、dplyrを使用するものがありますか?
あなたが '' 'のgetAddress(122.3493、47.62050)を通じて'のgetAddress(78.0422、27.17500)によって返された情報のすべてを含む 'data.frame'を作成しますか問題は、最初の要素が10個の要素を返し、最後の要素が6個の要素しか返さないということですか? –
希望の結果が 'historical_sites'という名前のSQLのテーブルとして想像され、各タプルがユニークなキー(longとlatのコンポジット)で構成されている場合、名前、住所、通り、地域、地域、国、そのような歴史的なサイトのように。したがって、各行は単一のサイトを表し、各列は地理属性になります。それは結果がどのように見えるかについてのアイデアを提供しますか?私は 'by(latLong、1:nrow(latLong)、function(x){})と' dplyr'と 'mapply'を含むいくつかの異なる方法を試しました。シングルバリューのみで働いた。 –