xx2. Scalaでファイル出力してRで表示

以下は、2015年度の資料

部分的には、2016年度の期末課題のヒントになるかも。

作業ファイル data.txt を予めメモ帳などで作成しておきます。

import java.io.PrintWriter

val file = new PrintWriter("data.txt")

file.println("Hello World!")

file.close

ファイルの置き場所と、Scalaの実行環境が異なる場合、ファイル名にパスを加えて指定します。

例) Windows vista で、 ユーザー名 kaz のホームディレクトリに data.txt ファイルを置いてある場合

val file = new PrintWriter("/users/kaz/data.txt")

Scala で適当にデータストリームを作成して、ファイルに数値を 1行に 1個 書き込む例)

// 1 1 1 1 のループ

val seq:Stream[Int] = 1 #:: seq

// 1 -1 1 -1 のループ

val seq2:Stream[Int] = 1 #:: -1 #:: seq2

// それぞれ 10 取り出して表示

seq take 10 foreach println

seq2 take 10 foreach println

// それぞれ 10 取り出してファイルに書き込み

seq take 10 foreach file.println

seq2 take 10 foreach file.println

// データがバッファに残っている場合、クローズするまでファイルに書き込みが行われないので、最後にファイルを close すること。

file.close

統計解析ソフト R をダウンロード http://cran.ism.ac.jp/

DL後、インストールする。

作業ディレクトリの変更 http://cse.naro.affrc.go.jp/takezawa/r-tips/r/06.html

Rでテキストファイルを読み込む http://cse.naro.affrc.go.jp/takezawa/r-tips/r/40.html

data.txt から数値列を読み込んで、表示。 テーブル y のカラム V1 (名前はRが自動指定) のデータは y$V1 と記す。

y <- read.table("data.txt")

plot(y$V1, type="h")

グラフの表示例)

Scalaで 0 1 2 3 4 タイプのストリームを作成し、ファイルに書き込む。data.txt を再利用して上書き。

// x からスタートし、+1づつ増加するストリーム

def seq3(x:Int):Stream[Int] = x #:: seq3(x + 1)

seq3(0) take 10 foreach println

seq3(10) take 10 foreach println

val file = new PrintWriter("/users/kaz/data.txt")

seq3(0) take 10 foreach file.println

file.close

Rでグラフとして表示

y <- read.table("data.txt")

plot(y$V1, type="h")