趣味の電子工作などの記録。時にLinuxへ行ったり、ガジェットに浮気したりするので、なかなかまとまらない。
RSS icon
  • 64bit環境にMPLAB-Xをインストールする

    投稿日 2016年 2月 13日 コメントはありません

    故あって、Ubuntu17.1 MATE 64bit環境に16bitPICをターゲットとしてMPLAB-Xをインストールしました。

    ダウンロードしたMPLAB-Xのtarファイルを展開すると、シェルアーカイブがでてくるので、これをスーパーユーザー権限で実行しても、

    ~$ sudo ./MPLABX-v3.20-linux-installer.sh
    64 Bit, check libraries
    Check for 32 Bit libraries
    These 32 bit libraries were not found and are needed for MPLAB X to run:
    libexpat.so
    libX11.so
    libXext.so

    となって、32bitライブラリをインストールするよう要求されます。・・・が、ここで表示されているものを素直にapt-getでインストールしようとしてもダメなのです。

    じゃあ、どうしたらいいのかについては、こちらに記載があります。

    ~$ sudo apt-get install libc6:i386 libx11-6:i386 libxext6:i386 libstdc++6:i386 libexpat1:i386
    パッケージリストを読み込んでいます... 完了
    依存関係ツリーを作成しています                
    状態情報を読み取っています... 完了
    以下の特別パッケージがインストールされます:
      gcc-4.8-base:i386 gcc-4.9-base:i386 libgcc1:i386 libxau6:i386 libxcb1:i386
      libxdmcp6:i386
    提案パッケージ:
      glibc-doc:i386 locales:i386
    以下のパッケージが新たにインストールされます:
      gcc-4.8-base:i386 gcc-4.9-base:i386 libc6:i386 libexpat1:i386 libgcc1:i386
      libstdc++6:i386 libx11-6:i386 libxau6:i386 libxcb1:i386 libxdmcp6:i386
      libxext6:i386
    アップグレード: 0 個、新規インストール: 11 個、削除: 0 個、保留: 12 個。
    5,061 kB のアーカイブを取得する必要があります。
    この操作後に追加で 13.7 MB のディスク容量が消費されます。
    続行しますか? [Y/n] 
    (以下略)

    ということで、パッケージ名の後ろに「:i386」をつける必要があったようです。わかってしまえばなんと言うことはないのですが、わからないと困りますよねぇ・・・。

    ここをパスできれば、あとは再びシェルアーカイブを実行するとインストール完了です。併せて、XC16もダウンロードしたシェルアーカイブを実行してやると途中でライセンスファイル生成のためにNICのMACアドレスの確認ダイアログが出ますが、そのまま次へ進めてしまえばインストール完了です。


  • Raspbianにmoserialをインストール

    投稿日 2016年 1月 19日 コメントはありません

    なんだかんだで忙しくて、気づけば11月末から更新してないですね。

    それはそうと、忘れないようにメモです。

    Linux環境でシリアル通信をするものに対するテスト・デバッグではmoserialが便利だと思っているのですが、ポータブルな環境で扱おうと思ってRaspberry Pi2で動かすべく、Raspbianにインストールしてみました。

    RaspbianのSynapticで検索してもmoserialは出てこないので、ソースからコンパイルするしかなさそうです。

    まず、環境整備として、Synapticで

    • gnome-common
    • libglib2.0-dev
    • yelp-tools
    • libgtk-3-dev
    • valac

    (とその依存ファイル)をインストールします。順に、

    • gnome-autogen.shがない
    • glib-gettext >= 2.2.0が要る
    • yelp.m4がない
    • ‘gtk+-3.0’パッケージがない
    • valacコマンドがない

    の対策になります。パッケージをインストールしたら、

    $ git clone git://git.gnome.org/moserial
    $ cd moserial
    $ ./autogen.sh --prefix=/usr
    $ make
    $ sudo make install
    $ moserial

    でgitでソースコードを引っ張ってきて、コンパイル、インストール、実行になります。(実際には引っかかりながら必要なパッケージをインストールしていったのですが)

    Raspbian環境ではUARTはUSBに接続したいわゆるUSBシリアルしかでてこないようです。(ハードウェアピンにはなかったっけ?)

    もしmoserialをインストールする方がいて、その参考になれば、ということで残しておきます。


  • LinuxでコミュニティFMのストリーミング放送を聞く

    投稿日 2015年 9月 10日 コメントはありません

    ふとした事から、たくさんあるコミュニティFMが共同でストリーミングサービスを実施しているのに気づきました。

    こちらに放送局の一覧とクリックで聞けるリンクがあるのですが、Linux+Chromeブラウザでは残念ながらクリックしてもasfファイルを保存するかを問うダイアログがでるのみで、放送は聞けません。

    しかし、URLをクリップボードにコピーしてVLCに渡してやることで放送自体は聞くことができます。そのやり方をメモしておきます。

    Screenshot-16

    放送局の一覧から、聞きたい局を決めます。そして、その「音声を聞く」アイコン(赤丸部分)を右クリックして、「リンクアドレスをコピー」します。

    Screenshot-サイマルラジオ - Google Chrome

    リンクアドレスをクリップボードにコピーしたら、VLCメディアプレイヤーを開きます。

    Screenshot-VLCメディアプレイヤー

    URLを入力するダイアログが開くので、ここにクリップボードにコピーしたURLを貼り付けて「再生」を押します。

    Screenshot-URLを開く

    これで放送が聞けます。局によってはビデオストリーミングをやっているところもあるようで、その様子も同じ方法で見ることができます。


  • ESP8266を操作してみる

    投稿日 2015年 7月 10日 コメントはありません

    秋月のAE-UM232Rと三端子レギュレータを接続してブレッドボード上でESP8266を動かしてみました。使用したモジュールは手持ちのESP-12でプリント基板パターンアンテナを使用したFCC認証済みのモデルです。

    IMG_0413s

    接続回路図はHack a Dayの記事のままです。真ん中下がピッチ変換基板に載せたESP-12モジュール、左上がAE-UM232R、右上に3.3Vを生成する三端子レギュレータを配置しています。真ん中には電解コンデンサとフィルムコンデンサが付いているのですが、これは後述のとおりなかなか動作しなかったので、電源系の不安定さを疑って追加したものです。その右側にはF/W書き込みのためのスイッチもつけてあります。USBで接続する先のPCはLinuxMint17.1 MATE edition 64bit版です。

    USBケーブルを接続すると、ESP-12に搭載されている青いLEDが一瞬点滅します。購入直後であればこの状態でスマートフォンなどにWiFiの状態をみるツールを入れてやるとアクセスポイントとして見えます。

    次にPC側でターミナルプログラムとしてGtkTermを起動して、シリアルポートに/dev/ttyUSB0を選択し、通信速度を9600bpsに設定すると、入力した文字がエコーバックされるのがわかります。
    この状態ではATコマンドを受け付けるはずなので、

    AT[Enter]

    と入力してやると「OK」と返ってくるはずなのですが、返って来ません。
    グーグル先生に聞いてみると、電源不安定だと起きるのではないかとか、そんな話が見つかります。それで電解コンやらフィルムコンやら追加したりしたのですが、状況が変わる気配はありません。

    さらに調べてみると、「改行コードは”\r\n”でないと動作しない」という情報が出てきました。そこで、[Enter]の代わりにCTRL+M、CTRL+Jと入力したのですが動作しません。代わりに日本語入力モードになってしまいました。

    そこで、一時的にIBus+Anthyの動作を止めてやりATの後にCTRL+M、CTRL+Jと入力してやると無事にOKが返ってきました。同様にいくつかコマンドを打ってみました。

    AT+RST
    
    
    OK
    c_��RS��FjS�fJ[��
    [Vendor:www.ai-thinker.com Version:0.9.2.4]
    
    ready
    AT+GMR
    
    0018000902-AI03
    
    OK
    AT+CWLAP
    
    +CWLAP:(4,"aterm-xxxxxx-gw",-54,"xx:xx:xx:xx:xx:xx",10)
    +CWLAP:(4,"aterm-xxxxxx-g",-55,"xx:xx:xx:xx:xx:xx",10)
    
    OK

    というような感じで無事にアクセスができました。上記の例を見てもわかるとおり、アクセスポイントの検出もできていました。

    ※上記の動作確認は接続先のアクセスポイントを含め、シールドルーム内で実施しています。早く技適対応済みのモジュールが入手できるようになって欲しいものです。


  • 三項演算子の振る舞い

    投稿日 2015年 7月 7日 コメントはありません

    実は最近調子が悪く、療養中の身で最近記事をかけていません。(ESP8266関係も追っかけられていません)

    ただ、Webを彷徨っていたらこんな記事を見かけたので考えてみました。

    i%n==0?1:0
    ってどんな意味?

    との質問。演算子の優先順位から言って、((i%n)==0)?1:0 と等価で、iがnの倍数の時に1になる動きをするのでしょう。

    実際にいくつかの言語で試してみました。

    1.C言語

    #include <stdio.h>
    int main(int argc,char *argv[])
    {
    	int n=5;
    	for(int i=0;i<20;i++)
    		printf("%d %d\n",i,i%n==0?1:0);
    }

    となります。コンパイルと実行結果は、

    $ gcc foobar.c -o foobar -std=c99
    $ ./foobar 
    0 1
    1 0
    2 0
    3 0
    4 0
    5 1
    6 0
    7 0
    8 0
    9 0
    10 1
    11 0
    12 0
    13 0
    14 0
    15 1
    16 0
    17 0
    18 0
    19 0

    2.Java言語

    public class foobar {
    	public static void main(String[] args) {
    
    		int n=5;
    		for(int i=0;i<20;i++){
    			System.out.println(i+" "+(i%n==0?1:0) );
    		}
    	}
    }

    コンパイルと実行は、

    $ sudo apt-get install default-jdk
    $ javac foobar.java 
    $ java foobar 
    0 1
    1 0
    2 0
    3 0
    4 0
    5 1
    6 0
    7 0
    8 0
    9 0
    10 1
    11 0
    12 0
    13 0
    14 0
    15 1
    16 0
    17 0
    18 0
    19 0

    となります。

    3.JavaScript言語(Node.js 環境)

    n=5;
    for(i=0;i<20;i++){
    	console.log(i+" "+(i%n==0?1:0))
    }

    実行は、

    $ nodejs foobar-node.js
    0 1
    1 0
    2 0
    3 0
    4 0
    5 1
    6 0
    7 0
    8 0
    9 0
    10 1
    11 0
    12 0
    13 0
    14 0
    15 1
    16 0
    17 0
    18 0
    19 0

    4.JavaScript(ブラウザ環境)

    n=5;
    for(i=0;i<20;i++){
    	document.writeln(i+" "+(i%n==0?1:0)+"<BR>")
    }

    ブラウザでからのページを開いて、右クリックでJavaScriptコンソールを開いて、上記のプログラムをコピペしてリターンキーを押すと、結果がブラウザ側に表示されます。

    5.JavaScript(おまけ)

    サーバサイドで実行して、ブラウザで結果を見る場合です。

    var http = require('http');
    
    var n=0;
     
    var server = http.createServer();
    server.on('request', doRequest);
    server.listen(8000);
    console.log('Server running at http://127.0.0.1:8000/');
    
    function doRequest(req,res){
    	res.writeHead(200, {'Content-Type': 'text/plain'});
    	n=n+1
    	res.write("Try #"+n+"\n");
    	for(i=0;i<45;i++){
    		res.write(i+" "+(i%n==0?1:0)+"\n");
    	}
    	res.end('Completed\n');
    }

    これを foobar-server.js で保存して

    $ nodejs foobar-server.js

    で実行し、ブラウザで http://localhost:8000/ を表示すると結果が見れます。
    firefoxではリロード毎にちゃんとnが1ずつ増えていくのですが、Chromeだと1から始まって2ずつ増えていきます。理由はわかりませんが、リロードの前に無駄な読み込みでもしているんでしょうか。それとも?


  • ESP8266対応のArduino IDEをビルドしてみた

    投稿日 2015年 4月 12日 コメントはありません

    先に紹介したESP8266対応のArduino IDEですが、GitHubにはなぜかLinuxの32bit版が存在しません。

    そこで、ビルドしてみました。
    環境は Ubuntu 14.04 LTS 32bit 版、CPUはCeleron847です。

    結論から言うと、ビルドするだけなら非常に簡単です。(ビルドするだけなら、ですけどね)
    手順は単にドキュメントに書かれているとおりです。

    まず、

    $ git clone https://github.com/esp8266/Arduino.git

    で、一式持ってきます。ここでダウンロードする量は1GBを超えるので、一体ビルドするのにどんなにかかるんだろう、と不安になります。

    $ cd Arduino/build
    $ and dist

    でビルドします。1回目は「JDKがない」と言われて失敗してしまいました。
    そこで、synapticで「default-jdk」をインストールして、再度、

    $ ant dist

    としてみました。すると、何やらさらに大量にダウンロードしていますので、一晩二晩くらいビルドにかかるんだろうか、と放置して寝ました。

    しかし、起きてみると、最後に、

    linux-dist:
     [echo] 
     [echo] =======================================================
     [echo] Arduino for Linux was built. Grab the archive from
     [echo] 
     [echo] linux/arduino-1.6.1-linux32.tar.xz
     [echo] =======================================================
     [echo]
    linux32-dist:
    BUILD SUCCESSFUL
    Total time: 9 minutes 29 seconds
    $

    として完了していました。表示を信じるなら10分弱で完了しています。

    いざ起動ですが、GitHubには起動方法は書かれていません。
    で、ぐぐってみると本家(?)のArduinoのビルド方法の説明が見つかりました。
    こちらを参考に、

    $ ant run

    とすると、少し経って arduino IDE が起動しました。

    ・・・が、ビルドしようとすると、g++が見つけられないようでエラーになってしまいます。しかし、すでにxtensa用のg++はビルド済みなので、

    $ ln -s /home/xxx/esp-open-sdk/xtensa-lx106-elf /home/xxx/Arduino/build/linux/work/hardware/tools/esp8266/.

    としてリンクを張ってやるとコンパイルは通るようになりました。・・・が、こんどは esptools ディレクトリがないと言ってエラーになるので、

    $ ln -s /home/xxx/esp-open-sdk/esptool /home/xxx/Arduino/build/linux/work/hardware/tools/esp8266/.

    として、リンクを張りました。・・・が、それでもまだエラーが出ます。

    Cannot run program "/home/xxx/Arduino/build/linux/work/hardware/tools/esp8266/esptool": error=13, 許可がありません

    切り分けるため、

    $ sudo ant run

    として起動してやると、ビルドが通りました。
    ・・・・が、通常起動ができなくなってしまいました。パーミッション周りでまだいろいろあるようです。

    $ ant clean
    $ ant run

    とすると起動はできましたが、シンボリックリンクが消失しているのか、また振り出しに戻ってしまいます。

    まあ、ここまでやるんなら、素直にOSを64bit版Linuxにした方がいいような気がします(^^;


  • R言語で画像データハンドリング(EBImage)

    投稿日 2015年 4月 5日 コメントはありません

    R言語で画像データを取り扱う方法を調べています。
    代表的なのはEBImageのようですので、まず試してみました。
    とりあえず、

    $ sudo R
    > source("http://bioconductor.org/biocLite.R")
    > biocLite("EBImage")

    としてインストールします。ルート権限で実行しないとパッケージのアップデートができない、と怒られます。なので、ルート権限で実行します。すると途中、他のパッケージのアップデートをするか聞いてくるので、アップデートしてやります。

    途中で「gfortranがない」と文句を言ってくるので、gfortran-4.8とlibgfortran-4.8-devをsynapticでインストールして、再度

    > biocLite("EBImage")

    としたらとりあえずエラー無しにインストールできたようです。
    (あと、imagemagick、libtiff5-devもインストールしておいたほうが良さそうです)

    データを読み込んでみます。

    > install.packages("tiff")
    > install.packages("png")
    > install.packages("jpeg")
    > install.packages("bmp")
    > library(EBImage)
    > library(bmp)
    > setwd("/home/xxx/R")
    > img <- read.bmp("small.bmp")
     以下にエラー read.bmp("small.bmp") : 
      Do not know how to handle compressed BMP
    > img <- read.bmp("large.bmp")
    > hist(img)
     エラー:  サイズ 795.6 Mb のベクトルを割り当てることができません 
    > plot(img)
     エラー:  サイズ 1.6 Gb のベクトルを割り当てることができません 
    >

    まず、小さく切り出したビットマップを読み込もうとしたのですが、GIMPで保存する際に圧縮がかかっているようです。そのために読み込めません。かといって、GIMPで切りだす前の巨大なビットマップを読もうとすると、読むことはできてもその後の処理が32bit版ではメモリ不足を起こすようです。

    仕方がないので、小さく切り出した画像を非圧縮のTIFで保存しなおしてみます。

    > img <- readImage("tate.tif")
    > display(img)
    > bimg <- img*255
    > bimg[,,1]
    Image
      colormode: Color 
      storage.mode: double 
      dim: 210 210 
      nb.total.frames: 1 
      nb.render.frames: 1 
    
    imageData(object)[1:5,1:6]:
         [,1] [,2] [,3] [,4] [,5] [,6]
    [1,]  106  104  101  100   96   93
    [2,]  138  139  143  140  135  137
    [3,]  110  106  112  121  114  111
    [4,]   52   50   52   54   54   49
    [5,]   47   47   45   44   42   48
    
    > bimg[,,2]
    Image
      colormode: Color 
      storage.mode: double 
      dim: 210 210 
      nb.total.frames: 1 
      nb.render.frames: 1 
    
    imageData(object)[1:5,1:6]:
         [,1] [,2] [,3] [,4] [,5] [,6]
    [1,]   88   91   93   96   88   89
    [2,]  134  138  136  139  136  133
    [3,]  121  111  115  114  115  118
    [4,]   61   59   57   57   61   63
    [5,]   50   48   43   46   51   44
    
    > bimg[,,3]
    Image
      colormode: Color 
      storage.mode: double 
      dim: 210 210 
      nb.total.frames: 1 
      nb.render.frames: 1 
    
    imageData(object)[1:5,1:6]:
         [,1] [,2] [,3] [,4] [,5] [,6]
    [1,]   98  102  107  112  108  104
    [2,]  141  143  147  145  143  145
    [3,]  122  119  114  111  109  114
    [4,]   53   51   52   51   51   49
    [5,]   41   41   37   42   46   45
    
    > hist(bimg)
    >

    最初の「img <- readImage(“tate.tif”)」で画像を読み込みます。
    読み込んだ画像を確認するために「display(img)」で表示させて確認します。
    次の「bimg <- img*255」は読み込んだ画像は0〜255の画素値が0〜1に割付け直されるようですので、これを0〜255に割りつけ直すために各画素を255倍します。RGBそれぞれの画素値はimg[,,x]の3番目の添字で選べるようです。
    読み込んだ画像は「hist(bimg)」でヒストグラムを取ることができます。この場合、勝手に1枚のグラフにRGBそれぞれの値をプロットしてくれます。

    さらにEBImageをつかって画像をハンドリングする例がこちらにありました。そのうち試してみたいと思います。
    また、基本的な画像処理(明度、コントラスト、ガンマ、切り出し、2値化、回転、平行移動、反転など)についてはこちらでひと通りの紹介がされています。

    でも、直接巨大ビットマップを扱いたいんだよなぁ・・・。


  • 【すごい】ESP8266がArduino IDEでサポートされる

    投稿日 2015年 3月 30日 4個のコメント

    いつものように、Hack a Dayの記事から。

    タイトル(「ARDUINO IDE SUPPORT FOR THE ESP8266」)だけ見ると、ESP8266をEthernet Shieldとして使えるようになったのかな、と思ってしまうところですが、そんな当たり前の話じゃありません

    『ArduinoでESP8266がサポートされた』のではなく、『Arduino IDEでESP8266がサポートされた』のです。言い換えると、ESP8266単体で動かすIoTアプリケーションの開発がArduino IDEでできるようになったということなのです。(github上のサンプルプログラムにはIoTのプロトコルであるMQTTのサンプルも載っています)

    ESP8266の内部のXtensaプロセッサをArduino IDEがサポートするようになり、ESP8266モジュールだけでArduinoのpinMode(),digitalRead(),digitalWrite(),analogRead()が使える上に、WiFi機能をEthernet Shieldと同様に使えるようです。一方で、PWMはESP8266自体がハードウェアリソースを1chしか持っていないので制約があり、SPIとI2Cはまだ動作しないようです。

    すでに github から Linux(64bit)、Windows、OS X用のArduinoコンパチのIDEがダウンロードできるようになっていて、サポートしている機能の範囲も同じところに書かれています。(Linux版をダウンロードしてみたら70MB以上ありました・・・)

    ESP8266の書き換えは、Hack a Dayのこちらの記事にあるような簡単な回路でできるようです。

    IDEの安定性次第のところはあるかもしれませんが、安定して使えるようになればこれは間違いなく大ブレイクすると思います。これで無線や電子工作に詳しくない人でもArduinoでマイコン制御機器を作ってみるのと大して変わらない感覚で、ESP8266を使ったIoT機器を作ってみるということが可能になるのですから。

    おそらく、Espressif社はWiFiを使ったIoT機器用のチップとしては数量でNo.1になっていくのではないでしょうか。(ちょうど、BluetoothでCSR社が占めているような立ち位置になるんじゃないかと予想します)


  • GNU R言語でCSVを扱う

    投稿日 2015年 3月 20日 コメントはありません

    訳あって、大量のCSVデータと格闘することになりそうです。
    そのために調べているのが統計解析のためのR言語です。

    試しに、気象庁から過去のデータを引っ張ってきてR言語で処理してみます。

    1.データをダウンロード

    気象庁の各種データ・資料のページの「過去の地点気象データ・ダウンロード」を開きます。

    まずデータをダウンロードする地点を選びます。
    今回は東京・大阪・仙台・名古屋・福岡を選んでみました。

    次に項目を選びます
    データの種類は「日別値」、過去の平均値との比較はなし、項目は「日平均気温」「日最高気温」「日最低気温」「降水量の日合計」「10分間降水量の日最大」「日照時間」「日平均風速」「日最大風速(風向)」「日最大瞬間風速(風向)」「日平均相対湿度」「日平均海面気圧」を選んでみました。

    次に期間を選びます。
    2014年1月1日~12月31日を選んでみたところ、データ量が多すぎるようです。
    「日照時間」「日平均風速」「日最大風速(風向)」「日最大瞬間風速(風向)」「日平均相対湿度」は項目から削除しました。

    これでCSVでダウンロードしました。

    2.文字コードの変換

    ダウンロードしたファイルは文字コードがSJISになっています。これをUTF-8に変換します。

    $&nbsp;iconv -f SJIS -t UTF8 kishou2014.csv > kishou2014-utf.csv

    3.データの読込みと生表示

    データファイルのあるディレクトリに移動してからR言語を起動し、

    > dataset <- read.csv("kishou2014-utf.csv",stringsAsFactors=FALSE,skip=2)

    としてdatasetオブジェクトにデータを読み込ませます。その際に、最初の2行(ダウンロード時刻と空行)は切り捨てます。「stringsAsFactors=FALSE」はこれがないと後で数値に変換する際におかしな変換がかかります。
    (参考: http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1474978024)

    読み込まれたデータをちょっとだけ見てみます。

    > dataset[1:6,]
             X         東京       東京.1       東京.2       東京.3       東京.4
    1   年月日 平均気温(℃) 平均気温(℃) 平均気温(℃) 最高気温(℃) 最高気温(℃)
    2                                                                          
    3                           品質情報     均質番号                  品質情報
    4 2014/1/1          9.6            8            1         15.5            8
    5 2014/1/2          7.3            8            1         12.1            8
    6 2014/1/3          5.9            8            1          8.5            8
            東京.5       東京.6       東京.7       東京.8           東京.9
    1 最高気温(℃) 最低気温(℃) 最低気温(℃) 最低気温(℃) 降水量の合計(mm)
    2                                                                     
    3     均質番号                  品質情報     均質番号                 
    4            1          3.1            8            1                0
    5            1          3.1            8            1                0
    6            1          3.8            8            1                0
               東京.10          東京.11          東京.12                東京.13
    1 降水量の合計(mm) 降水量の合計(mm) 降水量の合計(mm) 10分間降水量の最大(mm)
    2                                                                          
    3     現象なし情報         品質情報         均質番号                       
    4                1                8                1                      0
    5                1                8                1                      0
    6                1                8                1                      0

    実際にはもっとたくさん表示されます。

    2列目の東京の平均気温だけを表示させてみます。

    > dataset[,2]
     [1] "平均気温(℃)" "" "" "9.6" "7.3" 
     [6] "5.9" "6.5" "5.4" "5.3" "5.5" 
     [11] "7.3" "7.2" "3.6" "4.3" "5.3" 
     [16] "5.1" "4.2" "3.0" "4.8" "5.8" 
     [21] "5.2" "4.2" "4.8" "6.3" "5.5" 
     [26] "6.5" "7.2" "8.4" "9.5" "4.6" 
     [31] "8.8" "8.9" "10.3" "9.9" "7.9" 
     [36] "9.3" "12.8" "5.0" "1.6" "2.7" 
     [41] "4.0" "0.3" "5.4" "6.0" "3.3" 
     [46] "4.8" "5.3" "1.4" "3.9" "6.9" 
     [51] "7.3" "4.7" "4.7" "4.6" "5.5" 
     [56] "5.1" "5.6" "6.3" "8.2" "10.0" 
     [61] "10.0" "13.8" "8.9" "5.6" "6.6" 
     [66] "6.9" "6.5" "5.4" "4.4" "5.9" 
     [71] "6.4" "4.9" "6.1" "11.0" "12.3" 
     [76] "10.1" "8.3" "10.8" "12.1" "15.4" 
     [81] "11.2" "8.1" "10.1" "9.3" "11.6" 
     [86] "13.6" "16.6" "16.4" "12.6" "14.8" 
     [91] "17.7" "16.5" "15.7" "13.9" "15.2" 
     [96] "13.8" "15.3" "11.4" "9.0" "11.4" 
    [101] "15.8" "15.5" "16.1" "12.9" "14.6" 
    [106] "14.4" "14.0" "16.3" "18.7" "17.7" 
    [111] "11.8" "11.7" "11.0" "13.4" "15.2" 
    [116] "16.2" "16.6" "17.8" "18.2" "18.1" 
    [121] "18.6" "17.8" "16.7" "20.6" "21.0" 
    [126] "21.3" "18.6" "18.1" "14.3" "16.5" 
    [131] "18.7" "19.3" "19.8" "20.6" "19.6" 
    [136] "19.3" "21.9" "19.9" "21.5" "21.1" 
    [141] "20.5" "21.1" "21.7" "17.5" "18.6" 
    [146] "17.8" "20.6" "22.7" "21.3" "21.4" 
    [151] "22.7" "23.1" "24.1" "25.6" "26.6" 
    [156] "25.5" "24.0" "24.3" "21.2" "19.9" 
    [161] "18.4" "20.5" "22.9" "23.5" "22.2" 
    [166] "22.0" "24.9" "24.7" "24.4" "25.0" 
    [171] "24.3" "23.2" "24.8" "24.6" "24.6" 
    [176] "22.5" "24.2" "22.6" "22.6" "23.6" 
    [181] "23.9" "22.8" "23.3" "23.6" "25.3" 
    [186] "25.8" "24.8" "21.6" "22.0" "24.2" 
    [191] "23.4" "26.8" "24.2" "26.6" "28.5" 
    [196] "29.2" "26.9" "28.5" "28.2" "28.0" 
    [201] "27.1" "24.9" "23.8" "24.5" "25.0" 
    [206] "27.7" "29.4" "29.9" "30.5" "30.5" 
    [211] "30.1" "27.7" "27.6" "27.9" "29.5" 
    [216] "29.8" "30.9" "31.0" "30.5" "31.1" 
    [221] "30.8" "29.7" "29.0" "25.4" "26.3" 
    [226] "29.4" "26.3" "26.7" "27.1" "29.5" 
    [231] "27.0" "26.2" "29.1" "30.3" "31.1" 
    [236] "30.5" "30.2" "27.6" "28.4" "27.0" 
    [241] "25.2" "21.2" "21.1" "23.3" "22.6" 
    [246] "23.2" "21.8" "24.5" "24.1" "25.2" 
    [251] "27.8" "27.3" "21.7" "22.1" "23.5" 
    [256] "23.4" "21.8" "23.5" "23.1" "23.8" 
    [261] "24.1" "25.1" "23.3" "22.3" "22.3" 
    [266] "20.5" "21.3" "22.6" "22.1" "22.4" 
    [271] "24.4" "22.9" "20.2" "21.7" "23.5" 
    [276] "24.7" "21.2" "21.7" "25.7" "24.2" 
    [281] "17.2" "21.3" "20.0" "20.3" "21.0" 
    [286] "22.4" "20.3" "18.6" "18.1" "23.1" 
    [291] "15.9" "16.8" "18.4" "17.5" "18.3" 
    [296] "19.4" "19.0" "16.1" "14.3" "16.7" 
    [301] "18.3" "20.1" "19.3" "15.8" "16.4" 
    [306] "16.8" "18.4" "16.8" "19.5" "18.0" 
    [311] "16.2" "15.2" "17.7" "17.7" "14.1" 
    [316] "14.9" "17.8" "14.5" "14.1" "15.0" 
    [321] "12.8" "12.7" "12.5" "12.1" "12.9" 
    [326] "12.1" "9.1" "12.3" "13.8" "14.1" 
    [331] "13.2" "11.1" "9.2" "12.9" "14.1" 
    [336] "13.8" "15.1" "13.5" "10.8" "8.2" 
    [341] "8.8" "8.3" "5.1" "6.2" "6.6" 
    [346] "7.3" "7.3" "9.6" "9.3" "7.0" 
    [351] "4.8" "5.3" "3.6" "4.3" "4.0" 
    [356] "5.4" "5.3" "8.6" "7.1" "6.3" 
    [361] "5.9" "6.3" "5.1" "4.6" "3.8" 
    [366] "4.2" "6.6" "8.0"

    代わりに、最初の行に表示されたインデックス(?)を使って、「dataset$東京」でもアクセスできるようです。

    > dataset$東京
     [1] "平均気温(℃)" "" "" "9.6" "7.3" 
     [6] "5.9" "6.5" "5.4" "5.3" "5.5" 
     [11] "7.3" "7.2" "3.6" "4.3" "5.3" 
     [16] "5.1" "4.2" "3.0" "4.8" "5.8" 
     [21] "5.2" "4.2" "4.8" "6.3" "5.5" 
     [26] "6.5" "7.2" "8.4" "9.5" "4.6" 
     [31] "8.8" "8.9" "10.3" "9.9" "7.9" 
     [36] "9.3" "12.8" "5.0" "1.6" "2.7" 
     [41] "4.0" "0.3" "5.4" "6.0" "3.3" 
     [46] "4.8" "5.3" "1.4" "3.9" "6.9" 
     [51] "7.3" "4.7" "4.7" "4.6" "5.5" 
     [56] "5.1" "5.6" "6.3" "8.2" "10.0" 
     [61] "10.0" "13.8" "8.9" "5.6" "6.6" 
     [66] "6.9" "6.5" "5.4" "4.4" "5.9" 
     [71] "6.4" "4.9" "6.1" "11.0" "12.3" 
     [76] "10.1" "8.3" "10.8" "12.1" "15.4" 
     [81] "11.2" "8.1" "10.1" "9.3" "11.6" 
     [86] "13.6" "16.6" "16.4" "12.6" "14.8" 
     [91] "17.7" "16.5" "15.7" "13.9" "15.2" 
     [96] "13.8" "15.3" "11.4" "9.0" "11.4" 
    [101] "15.8" "15.5" "16.1" "12.9" "14.6" 
    [106] "14.4" "14.0" "16.3" "18.7" "17.7" 
    [111] "11.8" "11.7" "11.0" "13.4" "15.2" 
    [116] "16.2" "16.6" "17.8" "18.2" "18.1" 
    [121] "18.6" "17.8" "16.7" "20.6" "21.0" 
    [126] "21.3" "18.6" "18.1" "14.3" "16.5" 
    [131] "18.7" "19.3" "19.8" "20.6" "19.6" 
    [136] "19.3" "21.9" "19.9" "21.5" "21.1" 
    [141] "20.5" "21.1" "21.7" "17.5" "18.6" 
    [146] "17.8" "20.6" "22.7" "21.3" "21.4" 
    [151] "22.7" "23.1" "24.1" "25.6" "26.6" 
    [156] "25.5" "24.0" "24.3" "21.2" "19.9" 
    [161] "18.4" "20.5" "22.9" "23.5" "22.2" 
    [166] "22.0" "24.9" "24.7" "24.4" "25.0" 
    [171] "24.3" "23.2" "24.8" "24.6" "24.6" 
    [176] "22.5" "24.2" "22.6" "22.6" "23.6" 
    [181] "23.9" "22.8" "23.3" "23.6" "25.3" 
    [186] "25.8" "24.8" "21.6" "22.0" "24.2" 
    [191] "23.4" "26.8" "24.2" "26.6" "28.5" 
    [196] "29.2" "26.9" "28.5" "28.2" "28.0" 
    [201] "27.1" "24.9" "23.8" "24.5" "25.0" 
    [206] "27.7" "29.4" "29.9" "30.5" "30.5" 
    [211] "30.1" "27.7" "27.6" "27.9" "29.5" 
    [216] "29.8" "30.9" "31.0" "30.5" "31.1" 
    [221] "30.8" "29.7" "29.0" "25.4" "26.3" 
    [226] "29.4" "26.3" "26.7" "27.1" "29.5" 
    [231] "27.0" "26.2" "29.1" "30.3" "31.1" 
    [236] "30.5" "30.2" "27.6" "28.4" "27.0" 
    [241] "25.2" "21.2" "21.1" "23.3" "22.6" 
    [246] "23.2" "21.8" "24.5" "24.1" "25.2" 
    [251] "27.8" "27.3" "21.7" "22.1" "23.5" 
    [256] "23.4" "21.8" "23.5" "23.1" "23.8" 
    [261] "24.1" "25.1" "23.3" "22.3" "22.3" 
    [266] "20.5" "21.3" "22.6" "22.1" "22.4" 
    [271] "24.4" "22.9" "20.2" "21.7" "23.5" 
    [276] "24.7" "21.2" "21.7" "25.7" "24.2" 
    [281] "17.2" "21.3" "20.0" "20.3" "21.0" 
    [286] "22.4" "20.3" "18.6" "18.1" "23.1" 
    [291] "15.9" "16.8" "18.4" "17.5" "18.3" 
    [296] "19.4" "19.0" "16.1" "14.3" "16.7" 
    [301] "18.3" "20.1" "19.3" "15.8" "16.4" 
    [306] "16.8" "18.4" "16.8" "19.5" "18.0" 
    [311] "16.2" "15.2" "17.7" "17.7" "14.1" 
    [316] "14.9" "17.8" "14.5" "14.1" "15.0" 
    [321] "12.8" "12.7" "12.5" "12.1" "12.9" 
    [326] "12.1" "9.1" "12.3" "13.8" "14.1" 
    [331] "13.2" "11.1" "9.2" "12.9" "14.1" 
    [336] "13.8" "15.1" "13.5" "10.8" "8.2" 
    [341] "8.8" "8.3" "5.1" "6.2" "6.6" 
    [346] "7.3" "7.3" "9.6" "9.3" "7.0" 
    [351] "4.8" "5.3" "3.6" "4.3" "4.0" 
    [356] "5.4" "5.3" "8.6" "7.1" "6.3" 
    [361] "5.9" "6.3" "5.1" "4.6" "3.8" 
    [366] "4.2" "6.6" "8.0"

    どの名前をつければどの項目が切り出せるかは、str()でわかるようです。

    > str(dataset)
    'data.frame':	368 obs. of  101 variables:
     $ X        : chr  "年月日" "" "" "2014/1/1" ...
     $ 東京     : chr  "平均気温(℃)" "" "" "9.6" ...
     $ 東京.1   : chr  "平均気温(℃)" "" "品質情報" "8" ...
     $ 東京.2   : chr  "平均気温(℃)" "" "均質番号" "1" ...
     $ 東京.3   : chr  "最高気温(℃)" "" "" "15.5" ...
     $ 東京.4   : chr  "最高気温(℃)" "" "品質情報" "8" ...
     $ 東京.5   : chr  "最高気温(℃)" "" "均質番号" "1" ...
     $ 東京.6   : chr  "最低気温(℃)" "" "" "3.1" ...
     $ 東京.7   : chr  "最低気温(℃)" "" "品質情報" "8" ...
     $ 東京.8   : chr  "最低気温(℃)" "" "均質番号" "1" ...
     $ 東京.9   : chr  "降水量の合計(mm)" "" "" "0" ...
     $ 東京.10  : chr  "降水量の合計(mm)" "" "現象なし情報" "1" ...
     $ 東京.11  : chr  "降水量の合計(mm)" "" "品質情報" "8" ...
     $ 東京.12  : chr  "降水量の合計(mm)" "" "均質番号" "1" ...
     $ 東京.13  : chr  "10分間降水量の最大(mm)" "" "" "0" ...
     $ 東京.14  : chr  "10分間降水量の最大(mm)" "" "現象なし情報" "1" ...
     $ 東京.15  : chr  "10分間降水量の最大(mm)" "" "品質情報" "8" ...
     $ 東京.16  : chr  "10分間降水量の最大(mm)" "" "均質番号" "1" ...
     $ 東京.17  : chr  "平均海面気圧(hPa)" "" "" "1005.7" ...
     $ 東京.18  : chr  "平均海面気圧(hPa)" "" "品質情報" "8" ...
     $ 東京.19  : chr  "平均海面気圧(hPa)" "" "均質番号" "1" ...
     $ 大阪     : chr  "平均気温(℃)" "" "" "9.9" ...
     $ 大阪.1   : chr  "平均気温(℃)" "" "品質情報" "8" ...
     $ 大阪.2   : chr  "平均気温(℃)" "" "均質番号" "1" ...
     $ 大阪.3   : chr  "最高気温(℃)" "" "" "13.0" ...
     $ 大阪.4   : chr  "最高気温(℃)" "" "品質情報" "8" ...
     $ 大阪.5   : chr  "最高気温(℃)" "" "均質番号" "1" ...
     $ 大阪.6   : chr  "最低気温(℃)" "" "" "6.2" ...
     $ 大阪.7   : chr  "最低気温(℃)" "" "品質情報" "8" ...
     $ 大阪.8   : chr  "最低気温(℃)" "" "均質番号" "1" ...
     $ 大阪.9   : chr  "降水量の合計(mm)" "" "" "0.0" ...
     $ 大阪.10  : chr  "降水量の合計(mm)" "" "現象なし情報" "0" ...
     $ 大阪.11  : chr  "降水量の合計(mm)" "" "品質情報" "8" ...
     $ 大阪.12  : chr  "降水量の合計(mm)" "" "均質番号" "1" ...
     $ 大阪.13  : chr  "10分間降水量の最大(mm)" "" "" "0.0" ...
     $ 大阪.14  : chr  "10分間降水量の最大(mm)" "" "現象なし情報" "0" ...
     $ 大阪.15  : chr  "10分間降水量の最大(mm)" "" "品質情報" "8" ...
     $ 大阪.16  : chr  "10分間降水量の最大(mm)" "" "均質番号" "1" ...
     $ 大阪.17  : chr  "平均海面気圧(hPa)" "" "" "1012.2" ...
     $ 大阪.18  : chr  "平均海面気圧(hPa)" "" "品質情報" "8" ...
     $ 大阪.19  : chr  "平均海面気圧(hPa)" "" "均質番号" "1" ...
     $ 仙台     : chr  "平均気温(℃)" "" "" "5.4" ...
     $ 仙台.1   : chr  "平均気温(℃)" "" "品質情報" "8" ...
     $ 仙台.2   : chr  "平均気温(℃)" "" "均質番号" "1" ...
     $ 仙台.3   : chr  "最高気温(℃)" "" "" "9.9" ...
     $ 仙台.4   : chr  "最高気温(℃)" "" "品質情報" "8" ...
     $ 仙台.5   : chr  "最高気温(℃)" "" "均質番号" "1" ...
     $ 仙台.6   : chr  "最低気温(℃)" "" "" "1.2" ...
     $ 仙台.7   : chr  "最低気温(℃)" "" "品質情報" "8" ...
     $ 仙台.8   : chr  "最低気温(℃)" "" "均質番号" "1" ...
     $ 仙台.9   : chr  "降水量の合計(mm)" "" "" "5.0" ...
     $ 仙台.10  : chr  "降水量の合計(mm)" "" "現象なし情報" "0" ...
     $ 仙台.11  : chr  "降水量の合計(mm)" "" "品質情報" "8" ...
     $ 仙台.12  : chr  "降水量の合計(mm)" "" "均質番号" "1" ...
     $ 仙台.13  : chr  "10分間降水量の最大(mm)" "" "" "1.5" ...
     $ 仙台.14  : chr  "10分間降水量の最大(mm)" "" "現象なし情報" "0" ...
     $ 仙台.15  : chr  "10分間降水量の最大(mm)" "" "品質情報" "8" ...
     $ 仙台.16  : chr  "10分間降水量の最大(mm)" "" "均質番号" "1" ...
     $ 仙台.17  : chr  "平均海面気圧(hPa)" "" "" "1003.7" ...
     $ 仙台.18  : chr  "平均海面気圧(hPa)" "" "品質情報" "8" ...
     $ 仙台.19  : chr  "平均海面気圧(hPa)" "" "均質番号" "1" ...
     $ 名古屋   : chr  "平均気温(℃)" "" "" "6.1" ...
     $ 名古屋.1 : chr  "平均気温(℃)" "" "品質情報" "8" ...
     $ 名古屋.2 : chr  "平均気温(℃)" "" "均質番号" "1" ...
     $ 名古屋.3 : chr  "最高気温(℃)" "" "" "12.1" ...
     $ 名古屋.4 : chr  "最高気温(℃)" "" "品質情報" "8" ...
     $ 名古屋.5 : chr  "最高気温(℃)" "" "均質番号" "1" ...
     $ 名古屋.6 : chr  "最低気温(℃)" "" "" "1.8" ...
     $ 名古屋.7 : chr  "最低気温(℃)" "" "品質情報" "8" ...
     $ 名古屋.8 : chr  "最低気温(℃)" "" "均質番号" "1" ...
     $ 名古屋.9 : chr  "降水量の合計(mm)" "" "" "0.0" ...
     $ 名古屋.10: chr  "降水量の合計(mm)" "" "現象なし情報" "0" ...
     $ 名古屋.11: chr  "降水量の合計(mm)" "" "品質情報" "8" ...
     $ 名古屋.12: chr  "降水量の合計(mm)" "" "均質番号" "1" ...
     $ 名古屋.13: chr  "10分間降水量の最大(mm)" "" "" "0.0" ...
     $ 名古屋.14: chr  "10分間降水量の最大(mm)" "" "現象なし情報" "0" ...
     $ 名古屋.15: chr  "10分間降水量の最大(mm)" "" "品質情報" "8" ...
     $ 名古屋.16: chr  "10分間降水量の最大(mm)" "" "均質番号" "1" ...
     $ 名古屋.17: chr  "平均海面気圧(hPa)" "" "" "1011.4" ...
     $ 名古屋.18: chr  "平均海面気圧(hPa)" "" "品質情報" "8" ...
     $ 名古屋.19: chr  "平均海面気圧(hPa)" "" "均質番号" "1" ...
     $ 福岡     : chr  "平均気温(℃)" "" "" "10.5" ...
     $ 福岡.1   : chr  "平均気温(℃)" "" "品質情報" "8" ...
     $ 福岡.2   : chr  "平均気温(℃)" "" "均質番号" "1" ...
     $ 福岡.3   : chr  "最高気温(℃)" "" "" "12.6" ...
     $ 福岡.4   : chr  "最高気温(℃)" "" "品質情報" "8" ...
     $ 福岡.5   : chr  "最高気温(℃)" "" "均質番号" "1" ...
     $ 福岡.6   : chr  "最低気温(℃)" "" "" "6.5" ...
     $ 福岡.7   : chr  "最低気温(℃)" "" "品質情報" "8" ...
     $ 福岡.8   : chr  "最低気温(℃)" "" "均質番号" "1" ...
     $ 福岡.9   : chr  "降水量の合計(mm)" "" "" "0.0" ...
     $ 福岡.10  : chr  "降水量の合計(mm)" "" "現象なし情報" "0" ...
     $ 福岡.11  : chr  "降水量の合計(mm)" "" "品質情報" "8" ...
     $ 福岡.12  : chr  "降水量の合計(mm)" "" "均質番号" "1" ...
     $ 福岡.13  : chr  "10分間降水量の最大(mm)" "" "" "0.0" ...
     $ 福岡.14  : chr  "10分間降水量の最大(mm)" "" "現象なし情報" "0" ...
     $ 福岡.15  : chr  "10分間降水量の最大(mm)" "" "品質情報" "8" ...
     $ 福岡.16  : chr  "10分間降水量の最大(mm)" "" "均質番号" "1" ...
     $ 福岡.17  : chr  "平均海面気圧(hPa)" "" "" "1016.2" ...
      [list output truncated]
    >

    実際のデータは4つ目の9.6からなので、そこからを表示させてみます。

    > dataset$東京[4:368]
     [1] "9.6" "7.3" "5.9" "6.5" "5.4" "5.3" "5.5" "7.3" "7.2" "3.6" 
     [11] "4.3" "5.3" "5.1" "4.2" "3.0" "4.8" "5.8" "5.2" "4.2" "4.8" 
     [21] "6.3" "5.5" "6.5" "7.2" "8.4" "9.5" "4.6" "8.8" "8.9" "10.3"
     [31] "9.9" "7.9" "9.3" "12.8" "5.0" "1.6" "2.7" "4.0" "0.3" "5.4" 
     [41] "6.0" "3.3" "4.8" "5.3" "1.4" "3.9" "6.9" "7.3" "4.7" "4.7" 
     [51] "4.6" "5.5" "5.1" "5.6" "6.3" "8.2" "10.0" "10.0" "13.8" "8.9" 
     [61] "5.6" "6.6" "6.9" "6.5" "5.4" "4.4" "5.9" "6.4" "4.9" "6.1" 
     [71] "11.0" "12.3" "10.1" "8.3" "10.8" "12.1" "15.4" "11.2" "8.1" "10.1"
     [81] "9.3" "11.6" "13.6" "16.6" "16.4" "12.6" "14.8" "17.7" "16.5" "15.7"
     [91] "13.9" "15.2" "13.8" "15.3" "11.4" "9.0" "11.4" "15.8" "15.5" "16.1"
    [101] "12.9" "14.6" "14.4" "14.0" "16.3" "18.7" "17.7" "11.8" "11.7" "11.0"
    [111] "13.4" "15.2" "16.2" "16.6" "17.8" "18.2" "18.1" "18.6" "17.8" "16.7"
    [121] "20.6" "21.0" "21.3" "18.6" "18.1" "14.3" "16.5" "18.7" "19.3" "19.8"
    [131] "20.6" "19.6" "19.3" "21.9" "19.9" "21.5" "21.1" "20.5" "21.1" "21.7"
    [141] "17.5" "18.6" "17.8" "20.6" "22.7" "21.3" "21.4" "22.7" "23.1" "24.1"
    [151] "25.6" "26.6" "25.5" "24.0" "24.3" "21.2" "19.9" "18.4" "20.5" "22.9"
    [161] "23.5" "22.2" "22.0" "24.9" "24.7" "24.4" "25.0" "24.3" "23.2" "24.8"
    [171] "24.6" "24.6" "22.5" "24.2" "22.6" "22.6" "23.6" "23.9" "22.8" "23.3"
    [181] "23.6" "25.3" "25.8" "24.8" "21.6" "22.0" "24.2" "23.4" "26.8" "24.2"
    [191] "26.6" "28.5" "29.2" "26.9" "28.5" "28.2" "28.0" "27.1" "24.9" "23.8"
    [201] "24.5" "25.0" "27.7" "29.4" "29.9" "30.5" "30.5" "30.1" "27.7" "27.6"
    [211] "27.9" "29.5" "29.8" "30.9" "31.0" "30.5" "31.1" "30.8" "29.7" "29.0"
    [221] "25.4" "26.3" "29.4" "26.3" "26.7" "27.1" "29.5" "27.0" "26.2" "29.1"
    [231] "30.3" "31.1" "30.5" "30.2" "27.6" "28.4" "27.0" "25.2" "21.2" "21.1"
    [241] "23.3" "22.6" "23.2" "21.8" "24.5" "24.1" "25.2" "27.8" "27.3" "21.7"
    [251] "22.1" "23.5" "23.4" "21.8" "23.5" "23.1" "23.8" "24.1" "25.1" "23.3"
    [261] "22.3" "22.3" "20.5" "21.3" "22.6" "22.1" "22.4" "24.4" "22.9" "20.2"
    [271] "21.7" "23.5" "24.7" "21.2" "21.7" "25.7" "24.2" "17.2" "21.3" "20.0"
    [281] "20.3" "21.0" "22.4" "20.3" "18.6" "18.1" "23.1" "15.9" "16.8" "18.4"
    [291] "17.5" "18.3" "19.4" "19.0" "16.1" "14.3" "16.7" "18.3" "20.1" "19.3"
    [301] "15.8" "16.4" "16.8" "18.4" "16.8" "19.5" "18.0" "16.2" "15.2" "17.7"
    [311] "17.7" "14.1" "14.9" "17.8" "14.5" "14.1" "15.0" "12.8" "12.7" "12.5"
    [321] "12.1" "12.9" "12.1" "9.1" "12.3" "13.8" "14.1" "13.2" "11.1" "9.2" 
    [331] "12.9" "14.1" "13.8" "15.1" "13.5" "10.8" "8.2" "8.8" "8.3" "5.1" 
    [341] "6.2" "6.6" "7.3" "7.3" "9.6" "9.3" "7.0" "4.8" "5.3" "3.6" 
    [351] "4.3" "4.0" "5.4" "5.3" "8.6" "7.1" "6.3" "5.9" "6.3" "5.1" 
    [361] "4.6" "3.8" "4.2" "6.6" "8.0" 
    >

    これを別のオブジェクトに入れて、グラフ表示させてみます。

    > TokyoDegree <- as.numeric(dataset$東京[4:368])
    > summary(TokyoDegree)
       Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
       0.30    9.10   17.70   16.64   23.30   31.10 
    > plot(TokyoDegree,type="l")

    とすると、

    Screenshot-3

    としてグラフ表示されます。

    もう少し頑張って、日付とタイトル等を入れてみます。

    > dataset <- read.csv("kishou2014-utf.csv",stringsAsFactors=FALSE,skip=2)
    > day <- as.Date(dataset$X[4:368])
    > deg <- dataset$東京[4:368]
    > plot(day,deg,main="2014年 東京",xlab="日付",ylab="平均気温",type="l")

    とすると、

    Screenshot-4

    となりました。

    そのまま続けて、こんなことも簡単にできちゃいます。

    > hist(as.numeric(deg),breaks=seq(-2,35,1),xlab="平均気温",ylab="日数",main="2014年東京の平均気温別日数")

    Screenshot-5

    同様に、

    > plot(as.Date(dataset$X[4:368]),dataset$仙台.17[4:368],main="2014年 仙台",xlab="日付",ylab="平均海面気圧(hPa)",type="l")

    とすると、

    Screenshot-6

    という感じで仙台の2014年の平均海面気圧がグラフ表示されます。

    使いこなせば強力な武器になるのは間違いなさそうです・・・が、なかなか大変かも。
    (でも、習得すればExcelで毎回ポチポチとやるよりはずっと速そうですが・・・)


  • MicroPythonをビルドしてみた

    投稿日 2015年 3月 19日 コメントはありません

    MicroPythonをUbuntu上でビルドしてみました。

    まあ、特に難しいところはなくビルドできちゃいました。

    1.ソースを持ってきます

    なんのことはなく、gitコマンドで持ってきます。

    ~$ mkdir micropython
    ~$ cd micropython/
    ~/micropython$ git clone https://github.com/micropython/micropython
    Cloning into 'micropython'...
    remote: Counting objects: 26526, done.
    remote: Compressing objects: 100% (337/337), done.
    remote: Total 26526 (delta 163), reused 0 (delta 0), pack-reused 26185
    Receiving objects: 100% (26526/26526), 17.01 MiB | 1.30 MiB/s, done.
    Resolving deltas: 100% (18856/18856), done.
    Checking connectivity...

    2.ビルドします

    unixディレクトリに移動して、makeするだけです。

    ~/micropython$ cd micropython/
    ~/micropython/micropython$ cd unix
    ~/micropython/micropython/unix$ make
        :
        :
    modffi.c:32:17: fatal error: ffi.h: そのようなファイルやディレクトリはありません
    #include <ffi.h>
    ^
    compilation terminated.
    make: *** [build/modffi.o] エラー 1
    ~/micropython/micropython/unix$

    一部ヘッダがないと怒られてしまいました。調べてみると、libff-devパッケージに含まれるヘッダファイルのようです。

    パッケージを追加して続けます。

    ~/micropython/micropython/unix$ sudo apt-get install libffi-dev
    パッケージリストを読み込んでいます... 完了
    依存関係ツリーを作成しています 
    状態情報を読み取っています... 完了
    以下のパッケージが新たにインストールされます:
     libffi-dev
    アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 9 個。
    99.8 kB のアーカイブを取得する必要があります。
    この操作後に追加で 323 kB のディスク容量が消費されます。
    取得:1 http://jp.archive.ubuntu.com/ubuntu/ trusty/main libffi-dev amd64 3.1~rc1+r3.0.13-12 [99.8 kB]
    99.8 kB を 0秒 で取得しました (199 kB/s)
    以前に未選択のパッケージ libffi-dev:amd64 を選択しています。
    (データベースを読み込んでいます ... 現在 386967 個のファイルとディレクトリがインストールされています。)
    Preparing to unpack .../libffi-dev_3.1~rc1+r3.0.13-12_amd64.deb ...
    Unpacking libffi-dev:amd64 (3.1~rc1+r3.0.13-12) ...
    Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
    Processing triggers for doc-base (0.10.5) ...
    Processing 1 added doc-base file...
    Registering documents with scrollkeeper...
    Processing triggers for install-info (5.2.0.dfsg.1-2) ...
    libffi-dev:amd64 (3.1~rc1+r3.0.13-12) を設定しています ...
    ~/micropython/micropython/unix$

    気を取り直してmakeするとあっさり完了しました。

    3.試しに動かしてみる

    ドキュメント通りに動かしてみます。

    ~/micropython/micropython/unix$ ./micropython
    Micro Python v1.3.10-215-g005a7f4 on 2015-03-17; linux version
    >>> list(5 * x + y for x in range(10) for y in [4, 2, 1])
    [4, 2, 1, 9, 7, 6, 14, 12, 11, 19, 17, 16, 24, 22, 21, 29, 27, 26, 34, 32, 31, 39, 37, 36, 44, 42, 41, 49, 47, 46]
    >>> quit()
    Traceback (most recent call last):
     File "<stdin>", line 1, in <module>
    NameError: name 'quit' is not defined
    >>>

    quit()では終了できず、Ctrl-Dで終了させます。

    4.テストにかけてみる

    これもドキュメント通りに。

    ~/micropython/micropython/unix$ make test
    Use make V=1 or set BUILD_VERBOSE in your environment to increase build verbosity.
    cd ../tests && MICROPY_MICROPYTHON=../unix/micropython ./run-tests
    pass basics/0prelim.py
    pass basics/andor.py
    pass basics/array1.py
      :
    pass unix/ffi_callback.py
    pass unix/ffi_float.py
    395 tests performed (15494 individual testcases)
    395 tests passed
    ~/micropython/micropython/unix$

    あっさり動きました。