2016-09-30 5 views
0

元はこの過剰なランダム性を使用し、list_14300という名前の行列でモード(最大頻度)を見つけることでした。そして、プログラミングのもう一つの面が、私がAの下のコードを実行するたびに、私を気にし始めました。 Rを閉じてRを再起動し、同じコードを実行すると、ユーザー定義関数estimate_modeによって同じ出力が得られます。これは面倒です、私は毎回異なる出力を期待しています。これは終了する前に保存しないことと関係がありますか?それがそうであれば、出力がランダムでないことを意味します。私は1430年10によってマトリックス(list_14300)を作成し、上記の関数で、その値を決定してい下記なぜ私は変数を生成するために使用していますが、変数を再生成しません。

estimate_mode <- function(x) { 
    d <- density(x) 
    d$x[which.max(d$y)] 
} 

:ここ

は、ベクトルまたは行列のモードを見つけ、私はstackoverflowの上に見られる機能でありますその行列(1:1430の間)は、14300の値を持つ行列のほとんどの周波数で発生します。

A)。

list_14300<-replicate(10,sample(1:1430,1430,replace = TRUE)) 

estimate_mode(list_14300) 

私は以下のコードを実行してRプログラムを閉じてRを開き、同じコードを実行するたびに同じ出力が得られます。私は無作為抽出とそれによる別個の結果を期待しています。これは私が実行しているものです:

list_14300<-replicate(10,sample(1:1430,1430,replace = TRUE)) 
#### MODE 
estimate_mode(list_14300) 
# 

list_14300[1430,] 
min(list_14300[1430,]) 
max(list_14300[1430,]) 
list_14300[1430,1] 
# 

そして、私はRを閉じて再開しています毎回この結果、上記のコードを実行するには再び与えられます。

> list_14300<-replicate(10,sample(1:1430,1430,replace = TRUE)) 
> #### MODE 
> estimate_mode(list_14300) 
[1] 459.4862 
> # 
> 
> list_14300[1430,] 
[1] 1011 369 841 1383 82 1317 768 343 998 1203 
> min(list_14300[1430,]) 
[1] 82 
> max(list_14300[1430,]) 
[1] 1383 
> list_14300[1430,1] 
[1] 1011 

HECKは、各DISTINCT結果されない理由時間は、私が期待している?

+0

'list_1430'は何ですか? 'list_14300'の定義の' length() 'の引数として参照してください – dimebucker91

+0

' list_1430'(typo?これも 'list_14300'ですか?)に依存するため、' list_14300'定義は実行されません。定義されていません。また、 'list'は何か違うので、' list'で 'matrix'を命名することをお勧めします。 – Gregor

+0

しかし、一般に、 'apply'は行列に対してうまくいきます。 'apply(your_matrix、MARGIN = 1、estimate_mode)'は行列の各行に 'estimate_mode'関数を適用します。代わりに 'MARGIN = 2'を列に使用してください。 – Gregor

答えて

0

回答を投稿した後は、質問の範囲をかなり変更したようです。答えは、投稿した最初の質問です。

私が正しくあなたを理解していれば、あなたはそれぞれの要素が1430×10次元の行列であることと、リストを作成することができます

a <- list() 
for(i in 1:100) {a[[i]] <- replicate(10, sample(1:1430, 1430), replace = TRUE))} 

あなたはこのように、たとえば第2の行列をチェックすることができます。

a[[2]] 

その後、我々は、この関数を記述し、各マトリックスの中で最も頻繁に発生する回数見つける:

GetMax <- function(x){ 
        counts <- table(x) 
        counts_max <- as.numeric(names(counts[which.max(counts)])) 
        return(counts_max) 
        } 

その後、我々はすべての100個の行列に適用することができます。

lapply(a, GetMax) 

あなたが代わりにベクタに結果を取得し、ヒストグラムをプロットすることができます

most_freq <- unlist(lapply(a, GetMax)) 
hist(most_freq) 
関連する問題