RとSの比較
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
S clone と言われる R です.S version 3 互換と言われていますが,じゃぁ S version 4 より劣っているのか? なんて素朴に疑問に思ったのですが…
----
* [[What are the differences between R and S?:http://cran.r-project.org/doc/FAQ/R-FAQ.html#What%20are%20the%20differences%20between%20R%20and%20S%3f]] の教えるところ
[[R FAQ:http://cran.r-project.org/doc/FAQ/R-FAQ.html]] の [[What are the differences between R and S?:http://cran.r-project.org/doc/FAQ/R-FAQ.html#What%20are%20the%20differences%20between%20R%20and%20S%3f]] によれば,
- ''S'' には ''old S'' ,''new S'' ,''R'' という 3 種類の方言(エンジン)がある
- 相異点は以下の 3 つに大別される
-- Lexical Scope
-- Models
-- Others
とのこと.
** Lexical Scope
''lexical scope'' とは関数内で使われる自由変数の値を定める際の規則です.関数が定義された時点での環境から値を求める規則を lexical scope とよびます.
対義語は dynamic scope で,これは関数が呼ばれた時点での環境から値を求めます.
lexical scope を採用するメリットは [[R FAQ:http://cran.r-project.org/doc/FAQ/R-FAQ.html]] の
[[What are the differences between R and S?:http://cran.r-project.org/doc/FAQ/R-FAQ.html#What%20are%20the%20differences%20between%20R%20and%20S%3f]]
に挙げられていますが,大雑把には「関数が簡単になる」こと,「バグが減る」ことと考えれば良いのではないでしょうか.
** Models
-Sではlm(y ~ x^3)が、Rでは lm(y ~ I(x^3))
-glm family objects の名前が違う
-na.actionのデフォルトはna.omit(Sでは違うそうです)
-Rでは切片のないモデルを y~x-1 だけでなく、y~x+0とも表現できる。
** Others
: ''T'' と ''F'' は予約語では ''ない''| ''T'' と ''F'' は普通はそれぞれ ''TRUE'' と ''FALSE'' と解釈されるが,
ユーザが ''T <- 0'' のように書き換えることができる.(始めからTRUEを代入された変数にすぎない)
これは二値データを扱う際に便利である.したがって,関数を書く際には(正式に) ''TRUE'' ,''FALSE'' を使うことが望ましい.
:乱数発生|Rはメルセンヌ・ツイスター、Sは?
:データフレーム|Sではデータフレームは行列として扱われる。Rではデータフレームと行列は別物
:NA|Rでは文字変数であれば、NAはmissing扱いにならない。
::
----
* S version 3 と S version 4 の違い
* S version 3 と R の違い
* S version 4 と R の違い
* 関連リンク
- [[RとS-plusの速度比較]]
終了行:
S clone と言われる R です.S version 3 互換と言われていますが,じゃぁ S version 4 より劣っているのか? なんて素朴に疑問に思ったのですが…
----
* [[What are the differences between R and S?:http://cran.r-project.org/doc/FAQ/R-FAQ.html#What%20are%20the%20differences%20between%20R%20and%20S%3f]] の教えるところ
[[R FAQ:http://cran.r-project.org/doc/FAQ/R-FAQ.html]] の [[What are the differences between R and S?:http://cran.r-project.org/doc/FAQ/R-FAQ.html#What%20are%20the%20differences%20between%20R%20and%20S%3f]] によれば,
- ''S'' には ''old S'' ,''new S'' ,''R'' という 3 種類の方言(エンジン)がある
- 相異点は以下の 3 つに大別される
-- Lexical Scope
-- Models
-- Others
とのこと.
** Lexical Scope
''lexical scope'' とは関数内で使われる自由変数の値を定める際の規則です.関数が定義された時点での環境から値を求める規則を lexical scope とよびます.
対義語は dynamic scope で,これは関数が呼ばれた時点での環境から値を求めます.
lexical scope を採用するメリットは [[R FAQ:http://cran.r-project.org/doc/FAQ/R-FAQ.html]] の
[[What are the differences between R and S?:http://cran.r-project.org/doc/FAQ/R-FAQ.html#What%20are%20the%20differences%20between%20R%20and%20S%3f]]
に挙げられていますが,大雑把には「関数が簡単になる」こと,「バグが減る」ことと考えれば良いのではないでしょうか.
** Models
-Sではlm(y ~ x^3)が、Rでは lm(y ~ I(x^3))
-glm family objects の名前が違う
-na.actionのデフォルトはna.omit(Sでは違うそうです)
-Rでは切片のないモデルを y~x-1 だけでなく、y~x+0とも表現できる。
** Others
: ''T'' と ''F'' は予約語では ''ない''| ''T'' と ''F'' は普通はそれぞれ ''TRUE'' と ''FALSE'' と解釈されるが,
ユーザが ''T <- 0'' のように書き換えることができる.(始めからTRUEを代入された変数にすぎない)
これは二値データを扱う際に便利である.したがって,関数を書く際には(正式に) ''TRUE'' ,''FALSE'' を使うことが望ましい.
:乱数発生|Rはメルセンヌ・ツイスター、Sは?
:データフレーム|Sではデータフレームは行列として扱われる。Rではデータフレームと行列は別物
:NA|Rでは文字変数であれば、NAはmissing扱いにならない。
::
----
* S version 3 と S version 4 の違い
* S version 3 と R の違い
* S version 4 と R の違い
* 関連リンク
- [[RとS-plusの速度比較]]
ページ名: