Wie überprüft man, ob jedes Element in einem Vektor in R ganzzahlig oder nicht ist?

8

Sagen wir, ich habe einen Vektor y, und ich möchte prüfen, ob jedes Element in y ganzzahlig ist oder nicht, und wenn nicht, stoppe mit einer Fehlermeldung. Ich habe versucht, is.integer (y), aber es funktioniert nicht.

    
zca0 11.04.2012, 21:00
quelle

7 Antworten

15

Das einfachste (und schnellste!) Ding ist wahrscheinlich das:

%Vor%

... Also probieren Sie es aus:

%Vor%

Wenn Sie eine bessere Fehlermeldung möchten:

%Vor%     
Tommy 11.04.2012, 21:40
quelle
9

Sie könnten tun:

%Vor%

oder

%Vor%

und wenn Sie eine einzelne TRUE oder FALSE für die ganze Sache wollen, geben Sie sie in all() ein, z. B .:

%Vor%     
tim riffe 11.04.2012 21:09
quelle
6

Hier ist ein anderer Weg (mit dem gleichen Trick wie Justin, jede Zahl mit der Zahl zu vergleichen, die in den Typ 'integer' umgewandelt wurde):

%Vor%

Um Ihren Test zu machen:

%Vor%     
Michael Dunn 11.04.2012 21:15
quelle
4

Ich bin mir nicht sicher, was schneller ist, Tim oder das, aber:

%Vor%

oder:

%Vor%     
Justin 11.04.2012 21:11
quelle
2

Ich ging in eine völlig andere Richtung als Tim (ich mag sein besser, obwohl mein Ansatz auf einem gemischten Vektor arbeitet, der ein Zeichenvektor mit Ganzzahlen usw. ist.):

%Vor%

EDIT: hat die Funktion geändert, da sie nur bei Zeichenvektoren funktioniert.

Dies funktioniert auch mit Vektoren des Klassencharakters, falls Sie einen Zeichenvektor mit verschiedenen Zahlen haben, die aber durch ein anderes Zeichen ersetzt wurden.

    
Tyler Rinker 11.04.2012 21:13
quelle
1

Überprüfen Sie die folgenden Hilfen mit einer knackigen if-Bedingung, die wir beim Scripting verwenden können.

%Vor%

gibt

%Vor%

sff <- 'a' gibt 'a' als Ergebnis an.

    
yogi 07.05.2014 23:08
quelle
0

Wenn Sie einen Gleitkommadarstellungsfehler haben, versuchen Sie Folgendes:

%Vor%

In meiner Anwendung hatte ich einen sehr brutalen Gleitkommadarstellungsfehler, so dass:

%Vor%

Der Rest geteilt durch eins war eins. Ich stellte fest, dass ich mich vor der Ganzzahl runden musste. Ich denke, all dieser Tests würde fehlschlagen, wenn Sie möchten, dass die obigen 89 als Integer zählen. Die "all.equal" -Funktion ist die beste Möglichkeit, Gleitkommadarstellungsfehler zu behandeln, aber:

%Vor%

hätte wie in meinem Fall ein falsches Negativ für eine ganzzahlige Wertprüfung.

EDIT: Beim Benchmarking habe ich folgendes gefunden:

%Vor%

war allgemein der beste Darsteller.

%Vor%

hat normalerweise gut funktioniert, oft genauso schnell.

%Vor%

funktioniert, aber nicht so schnell wie die anderen

%Vor%

wenn der Vektor nicht ganzzahlig war, hatte schreckliche Leistung (sicherlich, weil es sich die Mühe macht, den Unterschied zu schätzen).

%Vor%

Wenn der Vektor alle ganzzahligen Werte enthielt, gab er das inkorrekte Ergebnis zurück (unter der Annahme, dass die Frage nach ganzzahligen Werten und nicht nach ganzzahligen Werten suchen sollte).

    
woodvi 03.11.2013 17:09
quelle

Tags und Links