Nebenbei bemerkt: Sie scheinen neu in R zu sein und sollten wahrscheinlich nur einige Einführungsmaterialien lesen. stackoverflow.com/questions/420296/…
Dason
Antworten:
92
# Sample from the vector 'a' 1 element.
sample(a, 1)
Seien Sie vorsichtig mit der Probe! Wenn adie Länge 1 ist, numerisch ist (im Sinne von is.numeric) und a> = 1 ist, erfolgt die Abtastung über die Stichprobe von 1:a. Beachten Sie, dass diese Komfortfunktion zu unerwünschtem Verhalten führen kann, wenn sie aunterschiedlich lang ist.
Pomber
Gibt es eine Funktion in R, die die Werte abtastet und nicht ausgewählte Werte als NAs belässt?
hhh
30
Die obigen Antworten sind technisch korrekt:
sample(a,1)
Wenn Sie diesen Vorgang jedoch viele Male wiederholen möchten, nehmen wir an, Sie möchten das Werfen eines Würfels nachahmen, müssen Sie Folgendes hinzufügen:
Seien Sie vorsichtig bei der Verwendung der Probe!
sample(a, 1)funktioniert gut für den Vektor in Ihrem Beispiel, aber wenn der Vektor die Länge 1 hat, kann dies zu unerwünschtem Verhalten führen. Er verwendet den Vektor 1:afür die Abtastung.
Wenn Sie also versuchen, ein zufälliges Element aus einem Vektor unterschiedlicher Länge auszuwählen, überprüfen Sie den Fall der Länge 1!
Das zweite Attribut zeigt an, dass Sie nur eine Zufallszahl erhalten möchten . Das Generieren von Zahlen zwischen bestimmten Bereichsfunktionen runifist nützlich.
Antworten:
# Sample from the vector 'a' 1 element. sample(a, 1)
quelle
a
die Länge 1 ist, numerisch ist (im Sinne von is.numeric) unda
> = 1 ist, erfolgt die Abtastung über die Stichprobe von1:a
. Beachten Sie, dass diese Komfortfunktion zu unerwünschtem Verhalten führen kann, wenn siea
unterschiedlich lang ist.Die obigen Antworten sind technisch korrekt:
sample(a,1)
Wenn Sie diesen Vorgang jedoch viele Male wiederholen möchten, nehmen wir an, Sie möchten das Werfen eines Würfels nachahmen, müssen Sie Folgendes hinzufügen:
a<-c(1,2,3,4,5,6) sample(a, 12, replace=TRUE)
Ich hoffe es hilft.
quelle
Seien Sie vorsichtig bei der Verwendung der Probe!
sample(a, 1)
funktioniert gut für den Vektor in Ihrem Beispiel, aber wenn der Vektor die Länge 1 hat, kann dies zu unerwünschtem Verhalten führen. Er verwendet den Vektor1:a
für die Abtastung.Wenn Sie also versuchen, ein zufälliges Element aus einem Vektor unterschiedlicher Länge auszuwählen, überprüfen Sie den Fall der Länge 1!
sampleWithoutSurprises <- function(x) { if (length(x) <= 1) { return(x) } else { return(sample(x,1)) } }
quelle
Lesen Sie diesen Artikel über das Generieren von Zufallszahlen in R.
http://blog.revolutionanalytics.com/2009/02/how-to-choose-a-random-number-in-r.html
Sie können
sample
in diesem Fall verwendensample(a, 1)
Das zweite Attribut zeigt an, dass Sie nur eine Zufallszahl erhalten möchten . Das Generieren von Zahlen zwischen bestimmten Bereichsfunktionen
runif
ist nützlich.quelle
Diese Methode erzeugt keinen Fehler, wenn Ihr Vektor die Länge eins hat, und es ist einfach.
a[sample(1:length(a),1)]
quelle
Eine Alternative besteht darin, ein Element mit runif aus dem Vektor auszuwählen. dh
a <- c(1,2,0,7,5) a[runif(1,1,6)]
Nehmen wir an, Sie möchten eine Funktion, die bei jeder Ausführung eine auswählt (nützlich beispielsweise in einer Simulation). Damit
a <- c(1,2,0,7,5) sample_fun_a <- function() sample(a, 1) runif_fun_a <- function() a[runif(1,1,6)] microbenchmark::microbenchmark(sample_fun_a(), runif_fun_a(), times = 100000L)
Einheit: Nanosekunden
sample_fun_a () - 4665
runif_fun_a () - 1400
runif scheint in diesem Beispiel schneller zu sein.
quelle