yuu_nkjm blog


2010-07-18(Sun) [長年日記] 編集

[R言語] ある分布からランダムにサンプルを取り出す

イディオム

書式 sample(x, size, replace = FALSE, prob = NULL) 引数 x : (数値、複素数、文字列、論理値)ベクトル。もしくは単一の整数(1:x と解釈) size : 選ばれる項目の数 (省略時は lenngth(x)) replace: 論理値。復元抽出か非復元抽出か? prob : 各項目を選び出す確率のベクトル(比率を与えるだけで良い)。省略時は等確率。 Rの確率分布システム - RjpWiki

使用例

hist(sample(c(0,1,2,3),1000,prob=c(100,100,300,500),replace=TRUE),freq=FALSE)
画像の説明

2010-07-17(Sat) [長年日記] 編集

[R言語] 追加パッケージのインストール

GUIのメニューバーより「パッケージ→パッケージのインストール」を選び,インストールしたいパッケージ名を選択する.もし,その一覧にインストールしたいパッケージがない場合は,「パッケージ→CRANミラーサイトの選択」や「パッケージ→ダウンロードサイト(レポジトリ)の選択」で設定を変更すると見つかるかもしれない.

画像の説明

2010-07-16(Fri) [長年日記] 編集

[R言語] 文字列をsplitした結果をイテレータとして使う

イディオム

for(element in unlist(strsplit(分割対象, セパレータの正規表現))){}

使用例

文字列を分割した結果をイテレータとして使いたいことがあるじゃないですか.Javaで書くと,ノリとしてはこんな感じ↓

String countries = "Japan|USA|EU";
for(String country :Arrays.asList(contries.split("\\|"))){
  System.out.println(country);
}

これと似たことをやろうとして,Rでこう書いたら意図通り動かなかった.

countries <- "Japan|USA|EU"
for(country in strsplit(countries, "\\|")){
	str(country)
}
> chr [1:3] "Japan" "USA" "EU"

そもそも分割した結果はなんやねんと見てみると

strsplit(countries, "\\|")
>[[1]]
>[1] "Japan" "USA"   "EU"   

というお答え.

リストの第1成分にベクトルが入っちゃってるのが悪いのか.そこで,

for(country in unlist(strsplit(countries, "\\|"))){
	str(country)
}
> chr "Japan"
> chr "USA"
> chr "EU"

とするか,

for(country in strsplit(countries, "\\|")[[1]]){
	str(country)
}
> chr "Japan"
> chr "USA"
> chr "EU"

としたらいけた.デバッグ開始時は,

as.vector(strsplit(countries, "\\|"))
>[[1]]
>[1] "Japan" "USA"   "EU"   

としてしまって,はまった.リストはベクトルだから,これでは何も変換されないんですね.


トップ 最新 追記 設定
2006|01|06|12|
2007|06|09|
2008|01|03|04|06|07|08|09|10|12|
2009|01|02|05|06|07|08|10|11|12|
2010|03|04|05|06|07|08|09|10|11|
2011|01|02|03|04|05|06|07|08|09|11|12|
2012|01|02|04|06|07|08|10|11|12|
2013|01|02|03|07|08|10|11|12|
2014|01|02|04|05|06|07|08|09|10|11|
2015|01|02|07|11|12|
2016|01|03|05|07|08|09|