sage/text/Rとの連携
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
[[FrontPage]]
#contents
2011/06/27からのアクセス回数 &counter;
ここで紹介したSageワークシートは、以下のURLからダウンロー...
http://www15191ue.sakura.ne.jp:8000/home/pub/15/
また、Sageのサーバを公開しているサイト(http://www.sagenb...
アップロードし、実行したり、変更していろいろ動きを試すこ...
* Rとの連携 [#oed85515]
Rはフリーの統計解析ソフトで、Sageのパッケージに付属してお...
インターフェースも用意されています。
Rの特徴に以下のものがあげられます。
- 強力な統計処理機能
- 豊富なパッケージ群
- 高い表現力を持つグラフ機能
SageからRのグラフ機能を使った例として、"R in action" で紹...
を
[[ここ>http://www15191ue.sakura.ne.jp:8000/home/pub/14/]]
にアップしてありますので、
参考にしてください。
ここでは、SageからRのコマンドを使用する場合の注意点とRイ...
** Rのユーティリティ関数 [#zd1bb6ec]
SageからRのコマンドを使いやすくするために、以下のユーティ...
- preGraph(pdfFile): グラフ表示のコマンドを実行する前に実...
- offGraph: デバイスへの出力をオフにします(グラフの終了...
- postGraph(pdfFile [,fac=0.75]): 指定されたPDFファイルを...
- getGraph(pdfFile, [,fac=0.75]): 指定されたPDFファイルを...
- convertPdf2Png(pdfFile): PDFファイルをPNGファイルに変換...
- printFile(name): DATAディレクトリ内の指定されたファイル...
attach関数を使ってRUtil.sageを読み込みます。
sageへの入力:
#pre{{
# Rのユーティリティ関数を読み込む
attach(DATA+'RUtil.sage')
}}
sageへの入力:
#pre{{
# ユーティリティ関数は以下のコマンドで内容を確認できます...
printFile("RUtil.sage")
}}
sageの出力:
#pre{{
# Safari以外ではPDFをimgタグで表示できないので、
# 外部コマンドImageMagickコマンドを使ってpngに変換するよ...
#
# Rのグラフをsageで表示するためのユーティリティ関数
import time
def preGraph(pdfFile):
filename = DATA+pdfFile
r.pdf(file='"%s"' %filename)
return pdfFile
def offGraph():
r.dev_off()
def postGraph(pdfFile, fac=0.75):
r.dev_off()
width = int(640*fac)
# html('<img src="%s?%s" width="%spx">'%(pdfFile, tim...
pngFile = convertPdf2Png(pdfFile)
html('<img src="%s?%s" width="%spx">'%(pngFile, time....
def getGraph(pdfFile, fac=0.75):
width = int(640*fac)
# return '<img src="%s?%s" width="%spx">'%(pdfFile, t...
pngFile = convertPdf2Png(pdfFile)
return '<img src="%s?%s" width="%spx">'%(pngFile, tim...
def convertPdf2Png(pdfFile):
pngFile = pdfFile.replace(".pdf", ".png")
result = os.popen("cd %s; convert -density 600 -geome...
# print result
return pngFile
def printFile(name):
fileName = DATA+name
file = open(fileName)
txt = file.read(); file.close()
print txt
}}
** Rインターフェース [#dbbf66cc]
Rとのインタフェースとして、r関数が提供されています。
r関数では、Rのコマンドを文字列で与えます。Rのコマンド内で...
Rのコマンド内でシングルクォートを使っている場合には、ダブ...
#pre{{
r('Rのコマンド')
}}
RのコマンドにSageの変数の文字列を代入する場合には、以下の...
#pre{{
r('Rのコマンド1%s, Rのコマンド2%s' % (変数1, 変数2))
}}
上記の例では、1番目の%sが変数1に、2番目の%sが変数2の値...
r関数の例として、Rで計算させた2のsqrtの結果を出力します。...
表示されます。
sageへの入力:
#pre{{
# Rインターフェース
r('sqrt(2)')
}}
sageの出力:
#pre{{
[1] 1.414214
}}
** 複数行のコマンド [#k0ef4945]
関数定義やRの制御コマンド(ループやif文等)を含む複数行の...
ファイルにまとめてワークシートにアップロードして使います。
例でとしてmystats.txtに以下のように自乗を計算するx2関数を...
sageへの入力:
#pre{{
# Rの関数や複数行にわたる制御文は、テキストファイルにまと...
printFile("mystats.txt")
}}
sageの出力:
#pre{{
x2<- function(x) {
return (x^x)
}
}}
*** Rコマンドファイルの実行 [#z3ee67f6]
ファイルに定義されたRのコマンドを読み込み評価するには、R...
以下の例では、mystats.txtに書かれたx2の関数定義を実行し、...
sageへの入力:
#pre{{
# Source関数でテキストファイルの内容を評価実行します
filename = DATA+"mystats.txt"
r('source("%s")' % filename)
# リストlの各要素に関数x2を適応する
r('l <- c(1, 2, 3)')
r('lapply(l, x2)')
}}
sageの出力:
#pre{{
[[1]]
[1] 1
[[2]]
[1] 4
[[3]]
[1] 27
}}
** Sageから変数(リスト)をRに渡す [#de29a0cb]
SageとRとの連携で重要なポイントはSageの変数をどうやってR...
以下の例では、変数slに[1, 2, 3]のリストをセットし、これを...
このままですとrlに返されるRElementオブジェクトの名前がSag...
割り当てられてしまします。
そこで、name関数でRにおける変数名を指定します。
#pre{{
rl = r(sl).name('l')
}}
説明でRの変数とSageの変数を混同しないようにRでの変数名をl...
値をrl変数にセットします。
出力結果から、r('l')で正しくslのリストがRに渡っていること...
また、rlのタイプは、sage.interfaces.r.RElementであり、そ...
r('l')と同じであることも確認できます。
sageへの入力:
#pre{{
# Sageの変数(リスト)をRに渡す
sl = [1, 2, 3]
# RにSageの変数slを渡し、Rでの変数名をlとする
rl = r(sl).name('l')
print r('l')
print type(rl)
print rl
}}
sageの出力:
#pre{{
[1] 1 2 3
<class 'sage.interfaces.r.RElement'>
[1] 1 2 3
}}
** SageからマトリックスをRに渡す [#eb706ae9]
リストの次にRでよく使われるのがマトリックスです。
例として、r.matrix関数を使って[1, 2, 3, 4]のリストから、2...
byrow=Trueとすることで、Sageと同じ行単位での配置を指定し...
(RではFORTRANの影響で列単位で配列を保持しています)
sageへの入力:
#pre{{
# マトリックスの生成も同様に生成後に名前をつけて代入すれ...
m = r.matrix([1, 2, 3, 4], 2, 2, byrow=True).name('m'); m
}}
sageの出力:
#pre{{
[,1] [,2]
[1,] 1 2
[2,] 3 4
}}
Rに定義された変数mの値を出力すると、上記の出力と同じこと...
sageへの入力:
#pre{{
# rでも同じ変数名が定義される
r('m')
}}
sageの出力:
#pre{{
[,1] [,2]
[1,] 1 2
[2,] 3 4
}}
** RのマトリックスからSageのマトリックスへの変換 [#r2ca6d...
次にRのマトリックスをSageのマトリックスに変換する方法を示...
先に定義されたRのマトリックスmをsageobj関数を使ってSageの...
以下の例では、r('m')で返されたRElementをsageobjでSageの変...
その値とタイプを確認しています。smは正しく変換され、smの...
sage.matrix.matrix_integer_dense.Matrix_integer_denseとな...
確認できます。
sageへの入力:
#pre{{
# Rのマトリックス変数をsageの変数に変換する
print type(m)
sm = sageobj(m)
show(sm)
print type(sm)
}}
&ref(out1.png);
*** Sageのマトリックス変数からRのマトリックスへの変換 [#p...
Sageの変数smからRのマトリックスに変換する場合には、listメ...
をリストに変換し、smの行、sm列を使ってRのマトリックスに変...
sageへの入力:
#pre{{
# Sage => Rの場合には、listメソッドでマトリックスからリス...
r.matrix(sm.list(), sm.nrows(), sm.ncols(), byrow=True)
}}
sageの出力:
#pre{{
[,1] [,2]
[1,] 1 2
[2,] 3 4
}}
** 文字列リストの変換 [#g301f020]
残念ながら、Sageの文字列リストは、そのままではRの文字列リ...
そこで、文字列リストをstr関数を使って文字列に変換し、最初...
r('c(%s)'%文字列リスト)を使ってRの文字列リストに変換しま...
sageへの入力:
#pre{{
# 文字列のリストの場合には、上記の方法では上手くいかない
ary = ["a", "b"]
ss = str(ary)[1:-1]; print ss # リストを文字列に変換して[...
rary = r('c(%s)'%ss).name('rary')
print rary # Rに変換した配列
sary = sageobj(rary)
print sary # sageに戻した配列
}}
sageの出力:
#pre{{
'a', 'b'
[1] "a" "b"
['a', 'b']
}}
** Rのプロット関数 [#taf3c642]
Rのプロット関数を使う場合には、preGraphとpostGraphで挟む...
sageへの入力:
#pre{{
# 正規分布をRインターフェースを使って表示
graph = preGraph("fig1.pdf")
r('x <- pretty(c(-3,3), 30)')
r('y <- dnorm(x)')
r('plot(x, y, type = "l", xlab = "Normal Deviate", ylab =...
postGraph(graph)
}}
&ref(fig1.png);
*** Rの関数を使ってSageでプロット [#o9e824df]
上記と同じことをRの関数dnormの値を使ってSageのplot関数で...
sageへの入力:
#pre{{
# 同じグラフをRと連携して表示した例(計算にRの関数を使用)
x = var('x')
f = lambda x: N(r.dnorm(x)) # r.dnormを使ってRのdnorm...
plot(f, [x, -3, 3], axes_labels=["Normal Deviate", "Densi...
}}
&ref(sage0.png);
*** r.plot関数を使ったプロット [#ufe29add]
次に、r.plotを使ったプロットの例を示します。X軸にage、Y軸...
r.plotにX, Yにsageの変数age, weightを使った場合、軸ラベル...
名前が表示されます。
sageへの入力:
#pre{{
# グラフ表示(軸ラベルが正しく表示されていない)
age = [1,3,5,2,11,9,3,9,12,3]
weight = [4.4,5.3,7.2,5.2,8.5,7.3,6.0,10.4,10.2,6.1]
graph = preGraph("fig2.pdf")
r.plot(age, weight)
postGraph(graph, fac=0.5)
}}
&ref(fig2.png);
*** 変数名を付けてr.plotでプロット [#vd88a132]
age, weightにnameコマンドでRの変数名をセットすると、軸ラ...
表示されます。
sageへの入力:
#pre{{
# データのセット
age = r([1,3,5,2,11,9,3,9,12,3]).name('age')
weight = r([4.4,5.3,7.2,5.2,8.5,7.3,6.0,10.4,10.2,6.1]).n...
# グラフ表示
graph = preGraph("fig3.pdf")
r.plot(age, weight)
postGraph(graph, fac=0.5)
}}
&ref(fig3.png);
*** plotのオプションを指定 [#r3c8ab89]
Rのplot関数にタイトル等のオプションを指定する場合には、r...
sageへの入力:
#pre{{
# タイトル等グラフオプションを指定する場合には、r.plotで...
# 日本語は文字化けする(Windows版では、pdfでは日本語が表示...
graph = preGraph("fig4.pdf")
r('par(family="Japan1Ryumin")')
r("plot(age, weight, main='Test plot')")
postGraph(graph, fac=0.5)
}}
&ref(fig4.png);
** データファイルからの集計 [#p8ae107e]
Rの得意とする集計処理を以下のようなデータファイルを読み込...
クロス集計を作成してみましょう。
sageへの入力:
#pre{{
# データファイル
printFile("Data.txt")
}}
sageの出力:
#pre{{
diabetes status
Type1 Poor
Type2 Improved
Type1 Excellent
Type1 Poor
}}
*** データファイルの読み込み [#v264c033]
データファイルの読み込みは、Rのread.table関数を使用します。
header=Tを付けて、1行目がヘッダであり、
1列目がdiabetes、2行目がstatusと名前付けします。
sageへの入力:
#pre{{
# データファイルの読み込み
fileName = DATA + 'Data.txt'
d = r("d<-read.table('%s', header=T)" %fileName) ; d
}}
sageの出力:
#pre{{
diabetes status
1 Type1 Poor
2 Type2 Improved
3 Type1 Excellent
4 Type1 Poor
}}
*** クロス集計 [#idd9b597]
クロス集計には、table関数を使用し、データセットdの変数、
diabetes, statusを指定します。
sageへの入力:
#pre{{
# クロス集計
r('table(d$diabetes, d$status)')
}}
#pre{{
Excellent Improved Poor
Type1 1 0 2
Type2 0 1 0
}}
** コメント [#w14b105c]
#vote(おもしろかった[3],そうでもない[0],わかりずらい[0])
皆様のご意見、ご希望をお待ちしております。
- RUtil.sageを利用させていただきたいです。ダウンロードか...
- ysatoさま、http://www15191ue.sakura.ne.jp:8000/home/pub...
- ysatoさま、printFile("RUtil.sage")の出力を追加しました...
- 早速の対応ありがとうございます。notebook の中で print(D...
- このワークシートを参考に Mathematica で R言語コードを実...
- ysatoさま、ご連絡ありがとうございます。お役に立てて良か...
- 別途 ImageMagick をインストールする必要があります。の意...
- ImageMagick の convert -resize x300 fig1.png fig2.png ...
#comment_kcaptcha
終了行:
[[FrontPage]]
#contents
2011/06/27からのアクセス回数 &counter;
ここで紹介したSageワークシートは、以下のURLからダウンロー...
http://www15191ue.sakura.ne.jp:8000/home/pub/15/
また、Sageのサーバを公開しているサイト(http://www.sagenb...
アップロードし、実行したり、変更していろいろ動きを試すこ...
* Rとの連携 [#oed85515]
Rはフリーの統計解析ソフトで、Sageのパッケージに付属してお...
インターフェースも用意されています。
Rの特徴に以下のものがあげられます。
- 強力な統計処理機能
- 豊富なパッケージ群
- 高い表現力を持つグラフ機能
SageからRのグラフ機能を使った例として、"R in action" で紹...
を
[[ここ>http://www15191ue.sakura.ne.jp:8000/home/pub/14/]]
にアップしてありますので、
参考にしてください。
ここでは、SageからRのコマンドを使用する場合の注意点とRイ...
** Rのユーティリティ関数 [#zd1bb6ec]
SageからRのコマンドを使いやすくするために、以下のユーティ...
- preGraph(pdfFile): グラフ表示のコマンドを実行する前に実...
- offGraph: デバイスへの出力をオフにします(グラフの終了...
- postGraph(pdfFile [,fac=0.75]): 指定されたPDFファイルを...
- getGraph(pdfFile, [,fac=0.75]): 指定されたPDFファイルを...
- convertPdf2Png(pdfFile): PDFファイルをPNGファイルに変換...
- printFile(name): DATAディレクトリ内の指定されたファイル...
attach関数を使ってRUtil.sageを読み込みます。
sageへの入力:
#pre{{
# Rのユーティリティ関数を読み込む
attach(DATA+'RUtil.sage')
}}
sageへの入力:
#pre{{
# ユーティリティ関数は以下のコマンドで内容を確認できます...
printFile("RUtil.sage")
}}
sageの出力:
#pre{{
# Safari以外ではPDFをimgタグで表示できないので、
# 外部コマンドImageMagickコマンドを使ってpngに変換するよ...
#
# Rのグラフをsageで表示するためのユーティリティ関数
import time
def preGraph(pdfFile):
filename = DATA+pdfFile
r.pdf(file='"%s"' %filename)
return pdfFile
def offGraph():
r.dev_off()
def postGraph(pdfFile, fac=0.75):
r.dev_off()
width = int(640*fac)
# html('<img src="%s?%s" width="%spx">'%(pdfFile, tim...
pngFile = convertPdf2Png(pdfFile)
html('<img src="%s?%s" width="%spx">'%(pngFile, time....
def getGraph(pdfFile, fac=0.75):
width = int(640*fac)
# return '<img src="%s?%s" width="%spx">'%(pdfFile, t...
pngFile = convertPdf2Png(pdfFile)
return '<img src="%s?%s" width="%spx">'%(pngFile, tim...
def convertPdf2Png(pdfFile):
pngFile = pdfFile.replace(".pdf", ".png")
result = os.popen("cd %s; convert -density 600 -geome...
# print result
return pngFile
def printFile(name):
fileName = DATA+name
file = open(fileName)
txt = file.read(); file.close()
print txt
}}
** Rインターフェース [#dbbf66cc]
Rとのインタフェースとして、r関数が提供されています。
r関数では、Rのコマンドを文字列で与えます。Rのコマンド内で...
Rのコマンド内でシングルクォートを使っている場合には、ダブ...
#pre{{
r('Rのコマンド')
}}
RのコマンドにSageの変数の文字列を代入する場合には、以下の...
#pre{{
r('Rのコマンド1%s, Rのコマンド2%s' % (変数1, 変数2))
}}
上記の例では、1番目の%sが変数1に、2番目の%sが変数2の値...
r関数の例として、Rで計算させた2のsqrtの結果を出力します。...
表示されます。
sageへの入力:
#pre{{
# Rインターフェース
r('sqrt(2)')
}}
sageの出力:
#pre{{
[1] 1.414214
}}
** 複数行のコマンド [#k0ef4945]
関数定義やRの制御コマンド(ループやif文等)を含む複数行の...
ファイルにまとめてワークシートにアップロードして使います。
例でとしてmystats.txtに以下のように自乗を計算するx2関数を...
sageへの入力:
#pre{{
# Rの関数や複数行にわたる制御文は、テキストファイルにまと...
printFile("mystats.txt")
}}
sageの出力:
#pre{{
x2<- function(x) {
return (x^x)
}
}}
*** Rコマンドファイルの実行 [#z3ee67f6]
ファイルに定義されたRのコマンドを読み込み評価するには、R...
以下の例では、mystats.txtに書かれたx2の関数定義を実行し、...
sageへの入力:
#pre{{
# Source関数でテキストファイルの内容を評価実行します
filename = DATA+"mystats.txt"
r('source("%s")' % filename)
# リストlの各要素に関数x2を適応する
r('l <- c(1, 2, 3)')
r('lapply(l, x2)')
}}
sageの出力:
#pre{{
[[1]]
[1] 1
[[2]]
[1] 4
[[3]]
[1] 27
}}
** Sageから変数(リスト)をRに渡す [#de29a0cb]
SageとRとの連携で重要なポイントはSageの変数をどうやってR...
以下の例では、変数slに[1, 2, 3]のリストをセットし、これを...
このままですとrlに返されるRElementオブジェクトの名前がSag...
割り当てられてしまします。
そこで、name関数でRにおける変数名を指定します。
#pre{{
rl = r(sl).name('l')
}}
説明でRの変数とSageの変数を混同しないようにRでの変数名をl...
値をrl変数にセットします。
出力結果から、r('l')で正しくslのリストがRに渡っていること...
また、rlのタイプは、sage.interfaces.r.RElementであり、そ...
r('l')と同じであることも確認できます。
sageへの入力:
#pre{{
# Sageの変数(リスト)をRに渡す
sl = [1, 2, 3]
# RにSageの変数slを渡し、Rでの変数名をlとする
rl = r(sl).name('l')
print r('l')
print type(rl)
print rl
}}
sageの出力:
#pre{{
[1] 1 2 3
<class 'sage.interfaces.r.RElement'>
[1] 1 2 3
}}
** SageからマトリックスをRに渡す [#eb706ae9]
リストの次にRでよく使われるのがマトリックスです。
例として、r.matrix関数を使って[1, 2, 3, 4]のリストから、2...
byrow=Trueとすることで、Sageと同じ行単位での配置を指定し...
(RではFORTRANの影響で列単位で配列を保持しています)
sageへの入力:
#pre{{
# マトリックスの生成も同様に生成後に名前をつけて代入すれ...
m = r.matrix([1, 2, 3, 4], 2, 2, byrow=True).name('m'); m
}}
sageの出力:
#pre{{
[,1] [,2]
[1,] 1 2
[2,] 3 4
}}
Rに定義された変数mの値を出力すると、上記の出力と同じこと...
sageへの入力:
#pre{{
# rでも同じ変数名が定義される
r('m')
}}
sageの出力:
#pre{{
[,1] [,2]
[1,] 1 2
[2,] 3 4
}}
** RのマトリックスからSageのマトリックスへの変換 [#r2ca6d...
次にRのマトリックスをSageのマトリックスに変換する方法を示...
先に定義されたRのマトリックスmをsageobj関数を使ってSageの...
以下の例では、r('m')で返されたRElementをsageobjでSageの変...
その値とタイプを確認しています。smは正しく変換され、smの...
sage.matrix.matrix_integer_dense.Matrix_integer_denseとな...
確認できます。
sageへの入力:
#pre{{
# Rのマトリックス変数をsageの変数に変換する
print type(m)
sm = sageobj(m)
show(sm)
print type(sm)
}}
&ref(out1.png);
*** Sageのマトリックス変数からRのマトリックスへの変換 [#p...
Sageの変数smからRのマトリックスに変換する場合には、listメ...
をリストに変換し、smの行、sm列を使ってRのマトリックスに変...
sageへの入力:
#pre{{
# Sage => Rの場合には、listメソッドでマトリックスからリス...
r.matrix(sm.list(), sm.nrows(), sm.ncols(), byrow=True)
}}
sageの出力:
#pre{{
[,1] [,2]
[1,] 1 2
[2,] 3 4
}}
** 文字列リストの変換 [#g301f020]
残念ながら、Sageの文字列リストは、そのままではRの文字列リ...
そこで、文字列リストをstr関数を使って文字列に変換し、最初...
r('c(%s)'%文字列リスト)を使ってRの文字列リストに変換しま...
sageへの入力:
#pre{{
# 文字列のリストの場合には、上記の方法では上手くいかない
ary = ["a", "b"]
ss = str(ary)[1:-1]; print ss # リストを文字列に変換して[...
rary = r('c(%s)'%ss).name('rary')
print rary # Rに変換した配列
sary = sageobj(rary)
print sary # sageに戻した配列
}}
sageの出力:
#pre{{
'a', 'b'
[1] "a" "b"
['a', 'b']
}}
** Rのプロット関数 [#taf3c642]
Rのプロット関数を使う場合には、preGraphとpostGraphで挟む...
sageへの入力:
#pre{{
# 正規分布をRインターフェースを使って表示
graph = preGraph("fig1.pdf")
r('x <- pretty(c(-3,3), 30)')
r('y <- dnorm(x)')
r('plot(x, y, type = "l", xlab = "Normal Deviate", ylab =...
postGraph(graph)
}}
&ref(fig1.png);
*** Rの関数を使ってSageでプロット [#o9e824df]
上記と同じことをRの関数dnormの値を使ってSageのplot関数で...
sageへの入力:
#pre{{
# 同じグラフをRと連携して表示した例(計算にRの関数を使用)
x = var('x')
f = lambda x: N(r.dnorm(x)) # r.dnormを使ってRのdnorm...
plot(f, [x, -3, 3], axes_labels=["Normal Deviate", "Densi...
}}
&ref(sage0.png);
*** r.plot関数を使ったプロット [#ufe29add]
次に、r.plotを使ったプロットの例を示します。X軸にage、Y軸...
r.plotにX, Yにsageの変数age, weightを使った場合、軸ラベル...
名前が表示されます。
sageへの入力:
#pre{{
# グラフ表示(軸ラベルが正しく表示されていない)
age = [1,3,5,2,11,9,3,9,12,3]
weight = [4.4,5.3,7.2,5.2,8.5,7.3,6.0,10.4,10.2,6.1]
graph = preGraph("fig2.pdf")
r.plot(age, weight)
postGraph(graph, fac=0.5)
}}
&ref(fig2.png);
*** 変数名を付けてr.plotでプロット [#vd88a132]
age, weightにnameコマンドでRの変数名をセットすると、軸ラ...
表示されます。
sageへの入力:
#pre{{
# データのセット
age = r([1,3,5,2,11,9,3,9,12,3]).name('age')
weight = r([4.4,5.3,7.2,5.2,8.5,7.3,6.0,10.4,10.2,6.1]).n...
# グラフ表示
graph = preGraph("fig3.pdf")
r.plot(age, weight)
postGraph(graph, fac=0.5)
}}
&ref(fig3.png);
*** plotのオプションを指定 [#r3c8ab89]
Rのplot関数にタイトル等のオプションを指定する場合には、r...
sageへの入力:
#pre{{
# タイトル等グラフオプションを指定する場合には、r.plotで...
# 日本語は文字化けする(Windows版では、pdfでは日本語が表示...
graph = preGraph("fig4.pdf")
r('par(family="Japan1Ryumin")')
r("plot(age, weight, main='Test plot')")
postGraph(graph, fac=0.5)
}}
&ref(fig4.png);
** データファイルからの集計 [#p8ae107e]
Rの得意とする集計処理を以下のようなデータファイルを読み込...
クロス集計を作成してみましょう。
sageへの入力:
#pre{{
# データファイル
printFile("Data.txt")
}}
sageの出力:
#pre{{
diabetes status
Type1 Poor
Type2 Improved
Type1 Excellent
Type1 Poor
}}
*** データファイルの読み込み [#v264c033]
データファイルの読み込みは、Rのread.table関数を使用します。
header=Tを付けて、1行目がヘッダであり、
1列目がdiabetes、2行目がstatusと名前付けします。
sageへの入力:
#pre{{
# データファイルの読み込み
fileName = DATA + 'Data.txt'
d = r("d<-read.table('%s', header=T)" %fileName) ; d
}}
sageの出力:
#pre{{
diabetes status
1 Type1 Poor
2 Type2 Improved
3 Type1 Excellent
4 Type1 Poor
}}
*** クロス集計 [#idd9b597]
クロス集計には、table関数を使用し、データセットdの変数、
diabetes, statusを指定します。
sageへの入力:
#pre{{
# クロス集計
r('table(d$diabetes, d$status)')
}}
#pre{{
Excellent Improved Poor
Type1 1 0 2
Type2 0 1 0
}}
** コメント [#w14b105c]
#vote(おもしろかった[3],そうでもない[0],わかりずらい[0])
皆様のご意見、ご希望をお待ちしております。
- RUtil.sageを利用させていただきたいです。ダウンロードか...
- ysatoさま、http://www15191ue.sakura.ne.jp:8000/home/pub...
- ysatoさま、printFile("RUtil.sage")の出力を追加しました...
- 早速の対応ありがとうございます。notebook の中で print(D...
- このワークシートを参考に Mathematica で R言語コードを実...
- ysatoさま、ご連絡ありがとうございます。お役に立てて良か...
- 別途 ImageMagick をインストールする必要があります。の意...
- ImageMagick の convert -resize x300 fig1.png fig2.png ...
#comment_kcaptcha
ページ名:
SmartDoc