[R]文字数の出現頻度を数える

R で文字数の出現頻度を数える
ふとやってみたくなったので、リファレンス片手にやってみた。
ハッシュ型は、環境変数を経由する方法でしか見つけられなかった。
普段から R を書き慣れている人はこんな書き方しないのだろうけど。

hash <- new.env(hash=TRUE, parent=emptyenv())
word <- 'abracadabra'
for (c in strsplit(word, NULL)[[1]]) {
  if (exists(c, hash)) {
    assign(c, get(c, hash) + 1, hash)
  } else {
    assign(c, 1, hash)
  }
}

for (c in ls(hash)) {
  cat(sprintf ('%s : %d\n', c, get(c, hash)))
}

一番手間取ったのは、文字列を 配列に変換する方法(文字列の分割)

strsplit(word, NULL)[[1]]

のインデックス操作は非R使いには浮かばない。


■Python 編
Python 2.7 なら collections.Counter があるので超簡単

>>> from collections import Counter
>>> for letter in 'abracadabra':
...   c[letter] += 1
...
>>> print c
Counter({'a': 5, 'r': 2, 'b': 2, 'c': 1, 'd': 1})
Advertisements
Tagged with: , , , , ,
Posted in python, R
3 comments on “[R]文字数の出現頻度を数える
  1. foo says:

    > table(strsplit(word, NULL)[[1]])

    a b c d r
    5 2 1 1 2

    • siguniang says:

      コメントありがとうございます。
      table を使うとひじょうにエレガントにできますね。
      まったく思いつきませんでした。

  2. […] https://siguniang.wordpress.com/2010/06/10/r%E6%96%87%E5%AD%97%E6%95%B0%E3%81%AE%E5%87%BA%E7%8F%BE%E9… Share this:TwitterFacebookLike this:Like一番乗りで「Like」しませんか。 from → 統計学, R ← thinkpad x200sのバッテリーヒンジの修理 コメントはまだありません […]

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Archives
  • RT @__apf__: How to write a research paper: a guide for software engineers & practitioners. docs.google.com/presentation/d… /cc @inwyrd 4 months ago
  • RT @HayatoChiba: 昔、自然と対話しながら数学に打ち込んだら何かを悟れるのではと思いたち、専門書1つだけ持ってパワースポットで名高い奈良の山奥に1週間籠ったことがある。しかし泊まった民宿にドカベンが全巻揃っていたため、水島新司と対話しただけで1週間過ぎた。 それ… 5 months ago
  • RT @googlecloud: Ever wonder what underwater fiber optic internet cables look like? Look no further than this deep dive w/ @NatAndLo: https… 5 months ago
  • @ijin UTC+01:00 な時間帯で生活しています、、、 10 months ago
  • RT @mattcutts: Google's world-class Site Reliability Engineering team wrote a new book: amazon.com/Site-Reliabili… It's about managing produc… 1 year ago
%d bloggers like this: