2017-10-31 1 views
1

Ich schrieb diese Codezeilen unten. Ich möchte die häufigste Wert in der Matrix erhalten:Welcher Typ gibt Tabelle in R zurück?

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

druckt diese:

> 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 
> 

Welche Art ist meine t Variable und a Variable, und wie kann ich den häufigsten Wert erhalten von der Matrix?

+0

Genau wie ein Nebenproblem möchten Sie wahrscheinlich nicht 't' als Variablennamen verwenden: Es ist der Name einer eingebauten Funktion. – dash2

Antwort

0

den "Typ" der variablen Verwendung wissen:

class(t) 
class(a) 

Aber beachten Sie bereits Ihre matrix7 als table hier setzen: t <- table(matrix7), während die Variable a ist ein integer.

Um das häufigste Element auf der Variable (t in Ihrem Fall) zu erhalten:

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

Im Allgemeinen, wenn Sie den „Typen“ wissen wollen, von einem (mehr richtig die Klasse genannt) Objekt, verwenden Sie die Funktion class:

> class(t) 
[1] "table" 

Es gibt ein paar Möglichkeiten, wie Sie die häufigsten Wert zu finden. Vorausgesetzt, dass Sie bereits die which.max berechnet haben, können Sie die entsprechende name von t nehmen:

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

Beachten Sie, dass Sie nicht nur t[a] nehmen kann, da das könnte eine ganze Zahl Code zurück (Faktoren ganze Zahlen sind darunter, und die ganze Zahl könnte nicht sein, was Sie erwarten). Das Objekt a ist ein ganzzahliger Vektor der Länge eins. Die "Daten" sind 18, und sie haben den "Namen" 19. Ein anderer und vielleicht einfacherer Weg, um den häufigsten Wert zu erhalten, ist names(a).

0

Sie können entweder class() verwenden, um das Klassenattribut eines R-Objekts abzurufen, oder typeof(), um den Typ oder Speichermodus abzurufen.

Klasse und Art der a sind 'integer', die Klasse von t ist 'table' und der Typ ist 'integer'.

Beachten Sie, dass a eine benannte ganze Zahl ist, deshalb werden 2 Werte gedruckt. Wenn Sie names(a) verwenden, wird nur der Wert (als ein Zeichen) von a zurückgegeben. Wenn Sie which.max(tabulate(matrix7)) verwenden, wird der Wert ohne weitere Änderung zurückgegeben.

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

(Side Knoten: da kein Saatgut das Ergebnis unterscheidet sich in Ihrem Code ist, können Sie es set.seed(x) mit wobei x eine ganze Zahl ist).

+0

Ich glaube nicht, dass das OP nach der Antwort "16" sucht - ich erwarte, dass die gewünschte Antwort "19" ist (der gebräuchlichste Wert). die 16 ergibt sich aufgrund der Faktorcodierung (einige Werte fehlen) – JDL

Verwandte Themen