R小技

R-Tips
Tinn-R

ベクトルの生成・操作

規則的なベクトルの生成法いくつか
> 1:4
1 2 3 4
> diag( c(1,2,3) )
対角行列 diag(1,2,3)
> seq(0, 10, by = 0.5)
0 から 10 まで 0.5 刻み
0ベクトルによる初期化
> x <- numeric( N )
> A <- matrix( numeric( N*M ), N, M)
ケツの10個を取り出す
> x[(length(x)-10):length(x)]
NAがあるかどうか
> is.na(x)
NAでない値だけ取り出す
> x[!is.na(x)]
1つでもNAがあったらFALSE
> any(is.na(x))
全部TRUEに限ってTRUE
> all(is.na(x))
2進ベクトル網羅
> as.numeric( intToBits( n ) )

行列の生成・操作

単位行列の生成
> E <- matrix( numeric( N*M ), N, M )
> diag(E) <- 1
N×M 乱数行列の生成
> matrix( runif(N*M, min=0, max=100) N, M)
上の例は一様乱数(unif)。他の乱数についてはこちら

データフレームの生成・操作

データフレームの同じデータ行をクローンする。rbindはNG
data.cloned <- data[ rep( idx.target, times ), ]

リストの生成・操作

NULLベクトルを10個持ったリスト
> x <- rep( list( NULL ), 10 )
リストの要素としてのNULL
通常、
> xi <- NULL
は、xi削除する意味になる。
xi に NULL ベクトルを持たせたい場合は、
> xi <- list( NULL )
とする。
リストに新たな項目を追加
> l <- list( "hoge"=3.14, "hage"=2.18 )
に、"tako"=0 を追加したい。
> l$tako <- 0
とすればおk
リストのリストから、同名の項をまとめてベクトルとして取り出す。
例)以下の set に対して、各 b の平均をとりたい。
> set <- list(); for( itr in 1:10 ) setitr <- list( a = runif(1), b = rnorm(1) )
> mean( sapply( set, "[[", "b" ) ) でおk

並べ替え

行列 data の1列目 data[,1] をインデックスとして並べ替え
> idx <- order( data[,1] )
> data.sorted <- data[idx,]
小さい順に10個取り出す。
> x <- rnorm(100)
> x[ which( order( x ) < 10 ) ]

ランダム抽出

1万行の行列 data から 100個のデータをランダム抽出
> idx <- sample(10000, 100)
> data[idx, ]
データベクトルxから、重みベクトルwでN個復元抽出(重複を許す抽出)
> idx <- sample( lengthj(x), N, replace=T, prob=w)
最終更新:2013年10月31日 19:37
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。