2017-10-31 4 views
1

私はこのコードを以下に書いています。 私は行列の中で最も頻繁に値を取得したい:Rの中のどのテーブルが返されますか?

matrix7 <- matrix(sample(1:36, 100, replace = TRUE), nrow = 1) 
    t <- table(matrix7) 
    print(t) 
    a <- which.max(table(matrix7)) 
    print(unlist(a)) 

それは、これを出力します。

t変数と a変数は何種類
> matrix7 <- matrix(sample(1:36, 100, replace = TRUE), nrow = 1) 

> t <- table(matrix7) 

> print(t) 

matrix7 
1 2 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 25 26 27 28 29 30 31 32 34 35 36 
4 5 1 5 2 5 1 3 1 4 2 2 2 5 5 1 3 7 2 3 2 3 2 1 4 4 2 2 2 5 2 5 3 
> a <- which.max(table(matrix7)) 

> print(unlist(a)) 

19 
18 
> 

、 とどのように私は最も頻度の高い値を得ることができます行列から?

+0

ちょうど副次的な問題として、変数名として 't'を使用したくないのはおそらく、組み込み関数の名前です。 – dash2

答えて

0

変数の使用の「タイプ」を知っている:

class(t) 
class(a) 

しかし、あなたはすでにここtableとしてあなたmatrix7を設定している気づく:あなたの変数aintegerている間t <- table(matrix7)を。

があなたの変数(あなたのケースではt)に最も一般的な要素を取得するには:一般的に

sort(table(as.vector(t))) 
0

、あなたは「タイプ」を知りたい場合の(より適切にクラスと呼ばれます)あなたが最も頻繁に価値を見出すことができるいくつかの方法があります

> class(t) 
[1] "table" 

:オブジェクト、機能classを使用しています。それは、(要因は整数整数の下で、整数コードを返すことがありますので、あなただけのt[a]を取ることができない

> as.numeric(names(t)[a]) 
[1] 5 ## I have a different random number seed to you :) 

注:すでにwhich.maxを計算していることを考えると、あなたは、対応するnametのを取ることができますあなたが期待するものではないかもしれません)。

例では、オブジェクトaは長さ1の整数ベクトルです。 "データ"は18であり、 "名前" 19を持っています。したがって、最も頻繁に値を取得する別の方法は、names(a)です。

0

class()を使用してRオブジェクトのクラス属性を取得するか、typeof()を使用してタイプまたはストレージモードを取得できます。 a

クラスとタイプが'integer'あり、tのクラスが'table'で、タイプは'integer'です。

aは名前付き整数なので、2つの値が出力されることに注意してください。 names(a)を使用すると、aの値(文字として)だけが返されます。

which.max(tabulate(matrix7))を使用すると、それ以上値を変更することなく値が返されます。

which.max(tabulate(matrix7)) 
[1] 16 

(側ノード:何の種子は、あなたのコード内で結果が異なるしないので、あなたは、xは整数であるset.seed(x)を使用して、それを設定することができます)。

+0

OPが答え "16"を探しているとは思わない - 私は希望の答えが "19"(最も一般的な値)であると思います。因子コーディング(いくつかの値は存在しない)に起因して16が生じる。 – JDL

関連する問題