読者です 読者をやめる 読者になる 読者になる

鴨川にあこがれる日々

軽い技術っぽい記事かいてます

久しぶりにRさわってみる

R
はじめに

数ヶ月前にRで簡単なテキスト処理をしたんですが,いろいろあってすっかり忘れてしまいました.
忘れてしまうしか触れていなかったともいえますが.

Rを触っていってちょっと気になったことを少し書こうと思います.

参考文献

大学で借りたこの本がわりといい感じだんたので,使っています.

途中からRMeCabというR上で日本語形態素解析MeCabが使えるパッケージを使います.
青空文庫のテキストやニュース記事で分類木だったり,デンドログラムやグラフを描いたり,統計量測ったり.

内容

PythonのListやRubyでArrayに相当するものをRでいうとベクトルだと思われる.

Rでは

> c(1,2,3,4,5) #1~5のベクトルを生成
[1] 1 2 3 4 5
# c(1:5)もこれと同値

Python(3.3.5)

>>> list = [1,2,3,4,5]
>>> list
[1, 2, 3, 4,5]

ここから違いについて
R

> vet = (1:6) # 1~6の整数値をもつベクトルを生成
> vet
[1] 1 2 3 4 5 6

> vet+7 #全ての要素に7加算
[1]  8  9 10 11 12 13

>vet[-1] #最初の要素を取り除く
[1] 2 3 4 5 6

> vet[1] #最初の要素を取り出す.
[1] 1

> vet[0] #Rubyの癖で0を指定するとベクトルに格納されている値の型が返す
integer(0)

> c(1,2,3,'hanazawa') #文字列を含んでベクトルを生成すると,全て文字列になる
[1] "1"        "2"        "3"        "hanazawa"

Python(3.3.5)

>>> list*3 #掛け算はできるけど,要素が整数倍される
[1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]

>>> list[0] #先頭の要素を取り出す
1

>>> list[-1] #配列の要素数-1番目を取り出す
4

>>> list = [1,2,3,'hoge'] #型の違う要素を格納できる
>>> list
[1, 2, 3, 'hoge']
まとめ

Rのベクトルについて

  • 添字は1から始まる.0は格納したデータの型を示す
  • 四則演算可能
  • 同じ型の要素しか格納できない
  • Vector[-1]は,最初の要素以外を指定

PythonのListについて

  • 添字は0から始まる.
  • 四則演算不可(整数倍は要素の整数倍複製) ライブラリをつかえばいろいろできるようです
  • いろんな型のデータを混在して格納可能
  • List[-1]は,末尾の要素を指定

PythonRubyに慣れてからRに触れると違和感がけっこうありました.