Ruby実用例 〜超簡単なデータ処理〜
をテンプレートにして作成
home
>
サイトマップ
開始行:
プログラムは,人がやるには苦痛を伴う単調な作業を正確に素...
ここではRubyプログラムの便利さの一端を感じるため,「カン...
* プログラムの名前 [#i293bd44]
名前は結構重要です.できれば何をするか分かる名前を付けま...
$ rowAverage.rb infile
とすれば実行できるようにします.「infile」というのは,入...
* データの流れ [#z90239dc]
データ処理を行うので,まずどんなデータを入力して,どんな...
** 入力データ [#w9fbe378]
287.5 ,287.8 ,287.5
201.0 ,200.7 ,201.0
155.6 ,155.9 ,155.9,155.7
135.1,134.7 ,134.7
124.5,124.2
117.1 ,117.8 ,117.5
111.5 ,111.5 ,111.5
...
何かの測定値がカンマで区切られています.区切りの量はいつ...
** 出力データ [#p7e3c99c]
つぎのように,行の平均値のみを出力することにします.
287.60
200.90
155.77
134.83
124.35
117.47
111.50
...
* コーディング [#p0f04cd2]
いくつかのステップに分けてプログラムを完成させて行きます...
** ステップ1 [#i4ad32df]
まず,コマンドとして動作し,入力ファイルを各行ごとに取得...
#!/usr/bin/env ruby
while line = gets
line.chomp!
p line # => "287.5 ,287.8 ,287.5 "
end
1行目はRubyスクリプトのコマンドとして動作させるための命令...
つづくwhile文で入力ファイルを行ごとに取得しています.gets...
上の書き方はRubyでフィルタ系のコマンドをつくる場合のイデ...
** ステップ2 [#v8384dda]
各行をカンマで区切る,という動作を加えます.つぎのようにS...
#!/usr/bin/env ruby
while line = gets
line.chomp!
p line.split(",") # => ["287.5 ", "287.8 ", "287.5 "]
end
lineにsplit(",")メソッドを使用することで,lineの内容をカ...
** ステップ3 [#q1ba9feb]
余分な空白も取り除くようにします.STRING.gsub()メソッドを...
#!/usr/bin/env ruby
while line = gets
line.chomp!
p line.gsub(/\s/, "").split(",") #=> ["287.5", "287.8"...
end
** ステップ4 [#ya2fbf1d]
配列をeach()メソッドに渡し,要素一つずつ取り出します.
#!/usr/bin/env ruby
while line = gets
line.chomp!
line.gsub(/\s/, "").split(",").each{|x|
p x.to_f #=> 287.5
}
end
ブロックに渡されたxにSTRING.to_fメソッドを使って,文字列...
** ステップ5 [#uc3f538c]
和をとって要素数で割る,という平均の操作を加えます.
#!/usr/bin/env ruby
while line = gets
line.chomp!
sum = 0.0; i = 0
line.gsub(/\s/, "").split(",").each{|x|
sum += x.to_f
i += 1
}
printf("%.2f\r\n", sum/i)
end
これで完成です.sumとiは,それぞれ行ごとの和,行ごとの要...
終了行:
プログラムは,人がやるには苦痛を伴う単調な作業を正確に素...
ここではRubyプログラムの便利さの一端を感じるため,「カン...
* プログラムの名前 [#i293bd44]
名前は結構重要です.できれば何をするか分かる名前を付けま...
$ rowAverage.rb infile
とすれば実行できるようにします.「infile」というのは,入...
* データの流れ [#z90239dc]
データ処理を行うので,まずどんなデータを入力して,どんな...
** 入力データ [#w9fbe378]
287.5 ,287.8 ,287.5
201.0 ,200.7 ,201.0
155.6 ,155.9 ,155.9,155.7
135.1,134.7 ,134.7
124.5,124.2
117.1 ,117.8 ,117.5
111.5 ,111.5 ,111.5
...
何かの測定値がカンマで区切られています.区切りの量はいつ...
** 出力データ [#p7e3c99c]
つぎのように,行の平均値のみを出力することにします.
287.60
200.90
155.77
134.83
124.35
117.47
111.50
...
* コーディング [#p0f04cd2]
いくつかのステップに分けてプログラムを完成させて行きます...
** ステップ1 [#i4ad32df]
まず,コマンドとして動作し,入力ファイルを各行ごとに取得...
#!/usr/bin/env ruby
while line = gets
line.chomp!
p line # => "287.5 ,287.8 ,287.5 "
end
1行目はRubyスクリプトのコマンドとして動作させるための命令...
つづくwhile文で入力ファイルを行ごとに取得しています.gets...
上の書き方はRubyでフィルタ系のコマンドをつくる場合のイデ...
** ステップ2 [#v8384dda]
各行をカンマで区切る,という動作を加えます.つぎのようにS...
#!/usr/bin/env ruby
while line = gets
line.chomp!
p line.split(",") # => ["287.5 ", "287.8 ", "287.5 "]
end
lineにsplit(",")メソッドを使用することで,lineの内容をカ...
** ステップ3 [#q1ba9feb]
余分な空白も取り除くようにします.STRING.gsub()メソッドを...
#!/usr/bin/env ruby
while line = gets
line.chomp!
p line.gsub(/\s/, "").split(",") #=> ["287.5", "287.8"...
end
** ステップ4 [#ya2fbf1d]
配列をeach()メソッドに渡し,要素一つずつ取り出します.
#!/usr/bin/env ruby
while line = gets
line.chomp!
line.gsub(/\s/, "").split(",").each{|x|
p x.to_f #=> 287.5
}
end
ブロックに渡されたxにSTRING.to_fメソッドを使って,文字列...
** ステップ5 [#uc3f538c]
和をとって要素数で割る,という平均の操作を加えます.
#!/usr/bin/env ruby
while line = gets
line.chomp!
sum = 0.0; i = 0
line.gsub(/\s/, "").split(",").each{|x|
sum += x.to_f
i += 1
}
printf("%.2f\r\n", sum/i)
end
これで完成です.sumとiは,それぞれ行ごとの和,行ごとの要...
ページ名:
home
>
Modified by
物理のかぎプロジェクト
PukiWiki 1.4.5_1
Copyright © 2001-2005
PukiWiki Developers Team
. License is
GPL
.
Based on "PukiWiki" 1.3 by
yu-ji
Powered by PHP 5.3.29HTML convert time to 0.002 sec.