2017-04-17 9 views
0

Rでgmapsdistanceパッケージを使用して、ポストコードのリスト(起点)と単一の宛先ポストコードの間の公共交通機関による旅時間を計算しようとしています。ループを使用してgmapsdistanceをリストに適用する

単一のクエリの出力は、次のとおりです。

$Time 
[1] 5352 

$Distance 
[1] 34289 

$Status 
[1] "OK" 

私が実際に使用する2.5K郵便番号を持っているが、私は10 LONDON1に反復を設定している私はそれをトラブルシューティングしながら、2500年の単一の列を含むデータフレームであります2500行のポストコード。

これはこれまでの私の試みです。私はこのループを実行すると、私は

results <- for(i in 1:10) { + gmapsdistance::set.api.key("AIzaSyDFebeOppqSyUGSut_eGs8JcjdsgPBo8zk") + gmapsdistance::gmapsdistance(origin = "london1[i]" + destination = "WC1E 6BT" Error: unexpected symbol in: " gmapsdistance::gmapsdistance(origin = "london1[i]" destination" mode = "transit" dep_date = "2017-04-18" dep_time = "09:00:00")} Error: unexpected ')' in " dep_time = "09:00:00")"

を取得

results <- for(i in 1:10) { 
gmapsdistance::set.api.key("xxxxxx") 
gmapsdistance::gmapsdistance(origin = "london1[i]" 
           destination = "WC1E 6BT" 
           mode = "transit" 
           dep_date = "2017-04-18" 
           dep_time = "09:00:00")} 

私の質問は以下のとおりです。

1)私はこの問題を解決するにはどうすればよいですか?

2)どのように私はこれをフォーマットする必要がありますので、出力は、いくつかのことがここで起こってあります

答えて

0

原点郵便番号や所要時間

感謝を含むデータフレームまたは行列です:

  • "london[i]"
      london[i, 1]
    • あなたはカンマであなたの引数を区切るために必要であることが必要,
    • 、例えば、​​を使用して、私は"WC1E-6BT"
    • のようなループは明示的だからあなたのコードresults

    の要素に値を割り当てる必要があり、ダッシュとスペースを交換することが必要で見つけたとき、私はエラーを取得しますそれはあなたがループを必要としない判明---とgmapsdistanceを使用した場合、おそらく---と複数の入力から出力にも役立ちます(ヘルプドキュメントを参照)ではないはずです

    library(gmapsdistance) 
    ## some example data 
    london1 <- data.frame(postCode = c('WC1E-7HJ', 'WC1E-6HX', 'WC1E-7HY')) 
    
    ## make an empty list to be filled in 
    results <- vector('list', 3) 
    for(i in 1:3) { 
        set.api.key("xxxxxx") 
        ## fill in your results list 
        results[[i]] <- gmapsdistance(origin = london1[i, 1], 
                destination = "WC1E-6BT", 
                mode = "transit", 
                dep_date = "2017-04-18", 
                dep_time = "09:00:00") 
    } 
    

    :次のようになりますすぐにあなたの出力をフォーマットしてdata.frame

    set.api.key("xxxxxx") 
    temp1 <- gmapsdistance(origin = london1[, 1], 
           destination = "WC1E-6BT", 
           mode = "transit", 
           dep_date = "2017-04-18", 
           dep_time = "09:00:00", 
           combinations = "all") 
    

    上記戻りdata.frameオブジェクト、TimeDistanceStatusための1つのそれぞれのリスト。

    res <- data.frame(origin = london1[, 1], 
            desination = 'WC1E-6BT', 
            do.call(data.frame, lapply(temp1, function(x) x[, 2]))) 
    

    lapply(temp1, function(x) x[, 2])は、リスト内の各data.frameから必要な列を抽出し、do.callは新しいdata.frameオブジェクトの列と一緒に戻ってそれらを置く:あなたは、簡単にあなたが望むかもしれないdata.frame含むすべてのものにそれらを作ることができます。

  • 関連する問題