0

私の質問は非常に単純だと思います。解決策が見つからないだけです。同様の状況を探してヘルプドキュメントを使い果たしました。

都市名である文字列のリストがあります。関数のリスト内の各名前を使用して、結果をテーブルに出力する関数/式を設定したいと考えています。私は、Mathematica 言語で書くことに関しては全くの初心者です。したがって、間違った用語を使用してもご容赦ください。これまでに書いたもののサンプルです。

Module[
 {dateRange, mean, cdd, hdd, station, country, location, population, 
  GDPPerCapita,
  reference = (65 - 32)/1.8, cumList},


 cityLIST = CityData[#, "Name"] & /@ CityData[];


 station =;
 country = CityData[station, "Country"];
 population = CityData[station, "Population"];
 location = CityData[station, "Coordinates"];
 GDPPerCapita = CountryData[country, "GDPPerCapita"];
 dateRange = {{2011, 1, 1}, {2011, 12, 31}, "Day"};
 mean = WeatherData[station, "MeanTemperature", dateRange];
 cdd = Join[Transpose[{mean[[All, 1]]}], 
   Transpose[{Max[# - reference, 0] & /@ mean[[All, 2]]}], 2];
 hdd = Join[Transpose[{mean[[All, 1]]}], 
   Transpose[{Min[# - reference, 0] & /@ mean[[All, 2]]}], 2];
 cumList = Transpose[{Join[
     Transpose[{cdd[[All, 1]]}],
     Transpose[{Drop[FoldList[Plus, 0, cdd[[All, 2]] + hdd[[All, 2]]],
         1]}],
     2]}];


 Grid[station, country, location, population, GDPPerCapita, 
  Last[cumList]]]

cityList は、使用したい入力のリストです。cityList の項目を駅の変数にしたい。次に、これらすべてをテーブルに出力します (上記のグリッドは単なるプレースホルダーです)。これはかなり基本的なものであるため、前もってお詫び申し上げます。機能させる方法を見つけることができませんでした。Mathematica の精選されたデータセットからのデータを使用していることに注意してください... cityData、countryData、および WeatherData。

ここにいる誰かが私に役立つトリックを持っていれば、本当に感謝しています!

4

2 に答える 2

0

このマシンには Mathematica がインストールされていないため、これは構文的に変形した回答になる可能性があります。

Mathematica とリストの操作に関する便利なトリックの 1 つは、最初にリストの要素の型を操作する関数を定義することです。あなたの場合、次のような関数が必要です。

writeARowOfMyTable[city_String]:=...

その関数を取得したら、さまざまな方法で都市名のリストに適用できます。1つの方法は、関数に属性を与えることですListable(ドキュメントを確認してください)。これは、次のような呼び出しを意味します

writeARowOfMyTable[listOfCityNames_List]

リスト内のすべての都市の行を返します。別のアプローチは、 Maporを使用することApplyです。もう一度、ドキュメントを確認してください。

あとは function を書くだけですwriteARowOfMyTable[]。あなたのコメントの1つから、あなたがこれを行ったことがわかります。私がお勧めするのは、次のようにコードをモジュールにラップすることだけです。

writeARowOfMyTable[city_String] := Module[{localVariablesGoHere},codeGoesHere]
于 2012-05-22T09:03:47.553 に答える
0

これは、ソリューションの概要です。

必要な各都市のデータを収集する関数:

GetData[city_List] := {city, 
  CityData[city // First, "Population"], 
  CountryData[city // Last, "GDPPerCapita"], 
  CityData[city, "Coordinates"], 
  WeatherData[First@city, 
     "MeanTemperature", {{2011, 1, 1}, {2011, 12, 31}, "Day"}][[All, 2]] // Mean}

関数を必要な都市にマップします。この場合、利用可能なすべての都市にマップします。

res=GetData/@CityData[];

最初の 10 都市の出力は次のとおりです。

GetData /@ (CityData[][[1 ;; 10]]) // TableForm

ただし、欠落しているデータに対処する必要がある場合があることに注意してください。

Mathematica グラフィックス

于 2012-05-22T14:59:14.537 に答える