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))
行列の生成・操作
単位行列の生成 > 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)
このwikiの更新情報RSS