2014-01-01から1年間の記事一覧

tupleの値をseqenceで取得したい

F#

Microsoft.FSharp.Reflection Namespace (F#) 動的に型情報などを持ってくるReflectionを使えばいいのか。 open Microsoft.FSharp.Reflection let x = (1,2,3,4,5) FSharpValue.GetTupleFields x |> Array.iter (fun z -> printfn "%d" (unbox<int> z))</int>

CのDLLをF#から呼びたい俺が辿った軌跡

F#

はじめに Cで作ったDLLをF#から呼び出す方法を探していたら、どうもplatform invokeだのmarshallingだのを気にしないとだめらしい。C#を使わない俺はその辺よくわかってないんだが、F#でやっている例として How to: Call Native Libraries from F# | Microso…

geom_lineとgeom_pathの違いに嵌る

R

あんまよくわかってなくて、酷い目に会いましたよと。まず、以下のようなシミュレーション結果「ある経路を表すx, y列を持つデータ」が手もとにあったとする。 > head(df) x y 1 119.2424 14.39025 2 118.9490 14.94898 3 118.6767 16.27511 4 117.9835 17.2…

TOPIX(2013年)のカレンダープロット

東京で尻を洗うカレンダープロット お、おお、こんなのあるんだ。昔、似たような感じの話で 2011年・TOPIXのヒートマップを作ってみた - My Life as a Mock Quant で試したコードよりも簡素化されていて大変よい。大変良いので真似てみた。ここでは、今目下…

やってみよう分析!Rで強化学習(Q-learning, ε-greedy行動選択)

やってみよう分析!おまけ 2 - 1: Excel VBAで強化学習(Q-learning, ε-greedy / softmax 行動選択) のR実装版。強化学習自体の解説は上の記事読んどいたらいい。めんどいのでとりあえずε-greedyのみやった。計算結果は > Qlearning() [,1] [,2] [1,] 5 20.0…

殺伐とした空気を吹き飛ばすアスキーアートなテラモナギ

R

なんか殺伐とした空気を吹き飛ばせるんじゃないか、そう強く感じさせるパッケージを2つみつけた。 まず、Githubからのインストール。 library(devtools) install_github("wrathematics/Rfiglet") install_github("sckott/cowsay") Rfigletから使ってみる。 …

1:length(x) の代わりに seq_along(x) を使うと良いってごみ箱が言ってた

R

@teramonagi 1:length(x) の代わりに seq_along(x) を使うと良いってごみ箱が言ってた。— kos59125 (@kos59125) 2014, 8月 18seq_alongの方が、空っぽのベクターに対しても安全に動作しますよっと。 > x <- 1:3 > 1:length(x) [1] 1 2 3 > seq_along(x) [1] …

地図を描きたい俺はgoogleVisパッケージかggmapパッケージかどちらを使おうか迷うが、静的な地図を描きたい場合はggmapで良いみたい

R

掲題の件、そういうことです。動的にインタラクティブに地図いじりたい!って人はgoogleVisパッケージでいいけど、静的な地図ならggmapなな印象だね!・・・と以下に書いてあった。 R help - googleVis plot and knitr/sweave というわけで、今、静的な地図…

こういうことが言いたいだけなんじゃねぇの?

R

他の部分に対する突っ込みはよくわからないが、とりあえずここはこうだろうと。 データサイエンスの本を買ったが一部アツすぎる内容で萎えた話 | JUMPERZ.NET Blog ↑この本を買ったのだが、95ページ周辺にむちゃくちゃな事が書いてあって萎えた。統計学では…

カジュアルにC++11 in R

R C++

以下のプラグイン plugins=c("cpp11")をcppFunctionに指定するだけ。Winでもいけた。C++11なんで戻り値をdecltypeにしてやろうと思ったら、できなかった。windowsのgccが古いせいかな? library(Rcpp) cppFunction(' std::vector<double> twoTimes(std::vector<double> xs) {</double></double>…

エラーの時にNULL返却するようにしたい

R

Rでの例外処理(tryCatchの使い方メモ) を参考にもっと簡略化したもの。 > #文字列型⇒日時型へ変換 > as.POSIXct("2013-3-2 13:45:32") [1] "2013-03-02 13:45:32 JST" > #文字列型⇒日時型へ変換??? > as.POSIXct("2013年3月2日") Error in as.POSIXlt.cha…

意外に速いRタソ compared to C++

R C++

ちょいとRcppをがっつり使ってみようと、その試行錯誤記録が続く予定。 速度検証のテストコードとして、ランダムウォークする系列データを生成するコードを書いた。 library(Rcpp) sourceCpp(code=' #include<vector> #include <functional> #include <numeric> #include <Rcpp.h> using namespace</rcpp.h></numeric></functional></vector>…

継続渡し(Continuation-passing style)の末尾再帰

F#

継続渡しスタイル - Wikipedia 末尾再帰 - Wikipedia ここらに書いてるのはこういうことだろうという。以下はリストの中の最大値を求めるコード。 let maximum xs = let rec maximum proc xs = match xs with | [] -> failwith "List is empty!!!" | x::[] -…

ファーマ・フレンチ(Fama/French) の3ファクター、ゲットだぜ!!

R

俺たちの最強Rクオンツブロガー・Timely Portfolioことタイポさんの記事をみると、ファーマ・フレンチの3ファクターをサクッとゲットできるなんて方法を解説されていたので、パク真似てみた。上の記事で、彼はzooパッケージによる可視化をしていたので、こ…

sapplyの戻り値がmatrix型に固定できない私はlapply+Reduce&cbindでしのぐという決断を下したのですが、mutable_eachを使えば良いということがわかりました。

R

やりたいことへの試行錯誤 例えばdplyrとmagrittrを活用して、mtcarsデータセットのmpg, cylの両列に対してround関数を適用するには、以下のように書くわけです。 > library(dplyr) > mtcars %>% select(mpg, cyl) %>% sapply(round) mpg cyl [1,] 21 6 [2,]…

日付型(Date)のある空のデータフレーム(data.frame)を作成する

R

どうやら as.Date(character()) として空の日付を作るのが大事っぽい。 > x <- data.frame(as.Date(character()), as.double()) > str(x) 'data.frame': 0 obs. of 2 variables: $ as.Date.character...:Class 'Date' num(0) $ as.double.. : num > rbind(x,…

optim関数で数値的に逆関数の計算したい

R

これがオーソドックスな正しいやり方なのかわからないけど、とりあえずやってみた。 optim関数で数値的に逆関数の計算したい(一次元版) とりあえず一次元の関数をと書いた時の、が与えられた下でのの推定を考えたい。これはもちろん解析解があるとハッピーな…

引数で渡した値が数値に変換可能かどうか調べる関数

R

ググってもひっかからなかったので、自作。警告メッセージをsuppressWarnings関数で止めてるのがミソ。 このくらい、既存のRの関数でもあるんじゃないかなーどっかにあるんじゃないかなー(チラッチラッ could_be_numeric <- function(value){!is.na(suppres…

POSIXct/文字列のベクトルをNAで初期化したい

R

Sys.time関数は「日付+時刻」で表現される現在時刻をPOSIXct型で返してくれる。 > class(Sys.time()) [1] "POSIXct" "POSIXt" ただ、このPOSIXct型のベクトルを、欠損(NA)付で使おうと意図して以下のように書くと… > x <- rep(NA, 3) > x[2] <- Sys.time() …

Rの正規表現で文字列分割〜複数スペースの場合〜

R

今までよくわかってなかったから、いっつもperl=TRUEのオプション指定して正規表現書いていたが、こうやって書けるんだなぁって話。 http://www.okada.jp.org/RWiki/?R%20%A4%CB%A4%AA%A4%B1%A4%EB%C0%B5%B5%AC%C9%BD%B8%BD でいうところの 幾つかの名前付き…

std::shared_ptrを噛ませても、親クラスに子クラスのオブジェクト突っ込める

C++

「あれ?これOKだったっけ?」という話の確認で、具体的には「Baseを継承したDerivedのshared_ptrをBaseのshared_ptrに入れれたっけな?」という。 よく考えると、これが出来ないとshared_ptr使って動的多態できなくなるので、出来て当たり前か…↓サンプルコ…

evalをlapplyしたい(以前もハマった気がする)

R

通常、R言語の呼び出しオブジェクトの評価と言えばevalを使って > eval(call("<-", substitute(a), 1:10)) なんて書くと変数aが現在の環境*1にアサインされるわけです。 これをリストでもやりたいぞとそういうことです。まず以下のような"呼び出しオブジェク…

データフレーム(文字列)の頻度を可視化したい 〜エラーバーを添えて〜 with dplyr, ggplot2

ベクトル(文字列)の頻度を可視化したい with dplyr, ggplot2 - My Life as a Mock Quant の続きみたいなもん。前回の記事では > sample(letters[1:15], 100, replace=TRUE) [1] "j" "n" "a" "n" "a" "l" "l" "h" "d" "o" "l" "l" "c" "f" "m" "g" "c" "j" "h…

ArrayのArrayをコピーする時、「こいつぁ…Shallow copyの匂いがするぜぇ…?」と疑うこと

F#

普通に配列をDeep copyしたいならArray.copyで良いわけです。以下のコードを見る限りちゃんと、xとyが違う配列の実体を持っていそうだぞとわかる。 > let x = [|1..5|];; val x : int [] = [|1; 2; 3; 4; 5|] > let y = Array.copy x;; val y : int [] = [|1…

不純な時はList(not list)使うのか

F#

不純野郎ですまない。値を束縛後にガンガン突っ込みたいときは、F#でなく.NETが提供しているList(not list)を使うとよいってことだ。 open System.Collections.Generic let x = List<int>() [1..10] |> List.iter (fun i -> x.Add i) x |> Seq.iter (fun z -> pri</int>…

ベクトル(文字列)の頻度を可視化したい with dplyr, ggplot2

R

ggplot2が苦手な俺がどうやってそれをやったのかという備忘録。必要なパッケージは以下の3つ。適当にinstall.packagesしておくべし。 library(ggplot2) library(magrittr) library(data.table) サンプルデータは適当に作った文字列ベクトル x <- sample(let…

tupleは関数の引数でもバラして受け取れるのが素晴らしい

F#

以下のようにローカル変数に対して、バラして受け取れるのは知っていたが、 > let a,b = (100, 123);; val b : int = 123 val a : int = 100 関数の引数に対してもこういう書き方していいのか。 > [(1,1);(3,3)] |> List.reduce (fun (x1, x2) (y1,y2) -> (x…

日次データから月末のみを抽出する

R

今すぐ貴方がフォローすべきたった1つのトゥイッターアカウントである@Nekopuni_氏が[R]日次データから月末のみを抽出する - http://t.co/UGE4zFnCK8— レベル相関皆殺しマン (@Nekopuni_) 2014, 6月 14なことを呟かれていて、詳細は以下のBLOGポストにある…

autoとdecltypeで楽がしたい

C++

C++03の世界では、mapのiterator作ろうとするとこれえらい量を冗長な感じでタイプしなければならなかったが、C++11から導入されたdecltype使うとなんか…C++なのにふつくしい、そんなコードに思えてきたっつー話。 例えば std::map<int, std::string>::iterator getIterator(std</int,>…

ベクトル場を矢印で可視化したい

R

昔書いたコードを掘り起こした。どこを参考に書いたのかは忘れた。以下は二次元ベクトル場計算の例(調和振動子のポテンシャァル想定)。 gradient.harmonic.potential <- function(coordinate, x0, y0, k) { #Evaluate : -grad(Potential) x <- coordinate[1]…