パッケージ開発中に依存パッケージインストールするにはdevtools::install_deps()

とりあえず開発してるPackageをRStudioあたりで開いておいて、以下を叩けばOKだって。

devtools::install_deps(dependencies = TRUE)

なるほどね~ - https://www.rdocumentation.org/packages/devtools/versions/1.13.6/topics/install_deps

DataExplorer packageでデータを大雑把に把握する

「データを大雑把にとらえるために何も考えずにこれに突っ込む」みたいな感じで使えてよい。
あと、BLOG移転したい。

(パッケージは別途インストール済として)たった↓だけのコードで

library("DataExplorer")
create_report(iris)


こういう結果がでる。

report.html - Google ドライブ


楽じゃない?
詳しくはVignettesを見てもらいたい。

Introduction to DataExplorer

Enjoy!

あれば環境変数からとる、なければGlobal環境からとる

掲題の件がやりたいので、こんな関数をかいた。

get_from_env_or_global_env <- function(x){
  if(Sys.getenv(x) != ""){
    Sys.getenv(x)
  } else if(exists(x)){
    eval(parse(text = x), envir=.GlobalEnv)
  }
}
#環境変数からとる
> get_from_env_or_global_env("OS")
[1] "Windows_NT"
#Global環境からとる
> a <- 111
> get_from_env_or_global_env("a")
[1] 111

この手のUtilityをPackageにまとめたい気もする。

bitFlyer LightningのAPI経由でRからBitcoinを買う

すっかり放置していた

bitFlyer LightningのAPIをRから使う - My Life as a Mock Quant

の続き。
POST系のメソッドをやろうとして昔失敗して放置していたのだが、なんか今日やったらうまくいった。
こんなんでRからBitcoinを指値で発注できます(そして2018年6月16日22時現在の相場だと約定します)。

BITFLYER_KEY <- "<your key>"
BITFLYER_SECRET <- "<your secret>"
BITFLYER_URL <- "https://api.bitflyer.jp"
path <- "/v1/me/sendchildorder"
timestamp <- as.numeric(Sys.time())
body <- '{
  "product_code": "BTC_JPY",
  "child_order_type": "LIMIT",
  "side": "BUY",
  "price": 699000,
  "size": 0.001,
  "minute_to_expire": 10000,
  "time_in_force": "GTC"
}'
sign <- digest::hmac(paste0(timestamp, "POST", path, body), key=BITFLYER_SECRET, algo="sha256", serialize=FALSE)
header <- httr::add_headers(
  `ACCESS-KEY`=BITFLYER_KEY,
  `ACCESS-TIMESTAMP`=timestamp,
  `ACCESS-SIGN`=sign,
  `Content-Type`="application/json"
)
httr::content(httr::POST(paste0(BITFLYER_URL, path), body=body, header))

Batch処理用のCodeの書き方

適当な.jlファイル(hoge.jl)に対して

cd("path-to-source-code")
push!(LOAD_PATH, pwd())
workspace()

... great code...

と三行程度のおまじないを書いたうえで、

julia> include("path-to-souce-code/hoge.jl")

するのが楽そうか。
workspace()はなんかモジュールの被りをよし何やってくれる関数だったはず。

N個の独立な一様乱数(-1, 1)の和の標準偏差は1/3√N

手計算で確認&ボケ防止にRでチェック。

sizes <- 2**(1:15)
y <- numeric(length(sizes))
for(i in seq_along(sizes)){
  x <- numeric(10**3)
  for(j in seq_len(10**3)){
    x[j] <- sum(runif(sizes[i], min=-1, max=1))
  }
  y[i] <- sd(x)
}
plot(sizes, y)
lines(sizes, sqrt(1/3*sizes))