2016年3月31日のブックマーク (6件)

  • Haskellで書かれたおもしろいFizzBuzz ― Haskellで読めないコードに遭遇した時に解読する方法を徹底解説! - プログラムモグモグ

    Haskellには抽象的な高階関数や演算子がいくつもあり、たまにそれらを巧妙に用いたコードがでてきて感心することがあります。 他の人が書いたHaskellのコードを読んでいると、なかなか面白いものと遭遇したりします。 巧妙に書かれたコードを解読していくと、実は型クラスのinstanceをうまく組み合わせて使っていて、とてもよい教材になることがあります。 実際にアプリケーションコードを書いていてここまで技巧的なコードを書くわけではありません。しかし、こういうコードを読み解くのは型クラスのいい練習になりますし、それまで知らなかったinstanceと遭遇したりしたときは、とても勉強になるのです。 このエントリーでは、とても技巧的なFizzBuzzを紹介し、それを読み解いていく方法を紹介します。 Haskellの初心者向けに、どういうふうに関数や型を調べて言ったらいいかを丁寧に書いています。 Ha

    Haskellで書かれたおもしろいFizzBuzz ― Haskellで読めないコードに遭遇した時に解読する方法を徹底解説! - プログラムモグモグ
    nishidy
    nishidy 2016/03/31
    Cool
  • Haskellで無限個の無限リストをソートされた形で結合する - プログラムモグモグ

    CodeforcesやProject Eulerの問題には、無限リストをうまく使うと綺麗に解くことができる問題がたくさんあります。 数列の性質から探索範囲の上界を決めて解を探索することが多いのですが、きちんとした根拠を持って上界を決めることができることは少なく、余裕を持って十分に広い範囲で計算して解を求める解法がよく取られます。 Haskellの特徴である遅延評価とその洗練された糖衣構文を用いると、無限リストを簡単に扱うことができます。 上界を適当に定める解法よりも、より宣言的で美しく、時に効率的なコードで同じ解を得ることができます。 しかし、無限リストをきちんと、それも無限個の無限リストをきちんと扱うとなると、意外と苦労します。 この記事では、無限個の無限リストをソートされた形で結合する方法について説明します。 一般的な無限リストではなく、条件はかなり絞っていてます (そうでないと原理的

    Haskellで無限個の無限リストをソートされた形で結合する - プログラムモグモグ
    nishidy
    nishidy 2016/03/31
  • Basic Text Mining in R

    To start, install the packages you need to mine text You only need to do this step once. Needed <- c("tm", "SnowballCC", "RColorBrewer", "ggplot2", "wordcloud", "biclust", "cluster", "igraph", "fpc") install.packages(Needed, dependencies=TRUE) install.packages("Rcampdf", repos = "http://datacube.wu.ac.at/", type = "source") If you get the following message: Update all/some/none? [a/s/n]: enter “a

    nishidy
    nishidy 2016/03/31
  • R dplyr, tidyr でのグルーピング/集約/変換処理まとめ - StatsFragments

    これの続き。よく使う集約/変換処理もまとめておく。 準備 library(dplyr) library(tidyr) (df <- dplyr::tbl_df(iris)) # Source: local data frame [150 x 5] # # Sepal.Length Sepal.Width Petal.Length Petal.Width Species # 1 5.1 3.5 1.4 0.2 setosa # 2 4.9 3.0 1.4 0.2 setosa # 3 4.7 3.2 1.3 0.2 setosa # .. ... ... ... ... ... グルーピング/集約 ある列の値ごとに集計 Species 列ごとに Sepal.Length 列の合計を算出する場合、 df %>% dplyr::group_by(Species) %>% dplyr::summa

    R dplyr, tidyr でのグルーピング/集約/変換処理まとめ - StatsFragments
    nishidy
    nishidy 2016/03/31
  • dplyrを使いこなす!基礎編 - Qiita

    はじめに 4月ということで、新卒が入ってきたりRを使ったことないメンバーがJOINしたりしたので、 超便利なdplyrの使い方を何回かに分けてまとめて行きます。 Rは知らないけど、SQLとか他のプログラミング言語はある程度やったことあるみたいな人向けです。 dplyrを使いこなす!シリーズ 基礎編以外も書きましたので、↓からどうぞ。 * dplyrを使いこなす!Window関数編 * dplyrを使いこなす!JOIN編 dplyrとは データフレームの操作に特化したパッケージです。 Rは基的に処理速度はあまり早くないですが、dplyrはC++で書かれているのでかなり高速に動作します。 ソースの可読性もよくなるので、宗教上の理由で禁止されている人以外は使うメリットは大きいです。 処理可能なデータサイズの目安 あくまでも個人の環境に強く依存した感覚値ですが、1000万行、100MBぐらいのデ

    dplyrを使いこなす!基礎編 - Qiita
    nishidy
    nishidy 2016/03/31
  • 細かすぎて使わない R 小技集 - Qiita

    知っていると便利かもしれない小技から,どーでもいい小技まで.ググったサンプルをコピペして完了!系大学院生が読むと,何か新しい発見があるかもしれません.使わなさ(当社比)を4段階(☆☆☆,★☆☆,★★☆,★★★)で表記しますので,ああ確かに知らなくていいなって思ってください.新しい技を仕入れ次第,更新します. 多次元データへのアクセス 次元を落とさない 使わなさ:☆☆☆(そこそこ役に立つ) デフォルト設定では,行列や配列の一部分にアクセスした場合,その戻り値はできる限り次元を落としたものになります(次元を落とすことを「ドロップする」と言うことにします).データフレームでも同様です. > x <- array(1:1000, c(10, 10, 10)) > class(x[1, 1, 1]) # 3次元配列 → 要素数1のベクトル(スカラ) [1] "integer" > class(x[1

    細かすぎて使わない R 小技集 - Qiita
    nishidy
    nishidy 2016/03/31