webentwicklung-frage-antwort-db.com.de

Wie erstellt man Vektoren mit bestimmten Intervallen in R?

Ich habe eine Frage zum Erstellen von Vektoren. Wenn ich a <- 1:10 mache, hat "a" die Werte 1,2,3,4,5,6,7,8,9,10.

Meine Frage ist, wie man einen Vektor mit bestimmten Intervallen zwischen seinen Elementen erstellt. Zum Beispiel möchte ich einen Vektor erstellen, der die Werte von 1 bis 100 aufweist, aber nur in Intervallen von 5 zählt, sodass ich einen Vektor mit den Werten 5,10,15,20, ..., 95,100 bekomme

Ich denke, dass wir in Matlab 1:5:100 können, wie machen wir das mit R?

Ich könnte versuchen, 5*(1:20) zu tun, aber gibt es einen kürzeren Weg? (da ich in diesem Fall die gesamte Länge kennen müsste (100) und dann durch die Größe des Intervalls (5) dividieren, um die 20 zu erhalten)

28
Luli

In R ist die entsprechende Funktion seq und Sie können sie mit der Option by verwenden:

seq(from = 5, to = 100, by = 5)
# [1]   5  10  15  20  25  30  35  40  45  50  55  60  65  70  75  80  85  90  95 100

Neben by können Sie auch andere Optionen wie length.out und along.with verwenden.

length.out : Wenn Sie insgesamt 10 Zahlen zwischen 0 und 1 erhalten möchten, zum Beispiel:

seq(0, 1, length.out = 10)
# gives 10 equally spaced numbers from 0 to 1

along.with : Er nimmt die Länge des Vektors, den Sie als Eingabe angeben, und liefert einen Vektor von 1: length (Eingabe).

seq(along.with=c(10,20,30))
# [1] 1 2 3

Anstelle der along.with-Option wird empfohlen, in diesem Fall seq_along zu verwenden. Aus der Dokumentation für ?seq

seq ist generisch und nur die Standardmethode wird hier beschrieben. Beachten Sie, dass er unabhängig von den Argumentnamen auf die Klasse des first -Arguments abstellt. Dies kann unbeabsichtigte Konsequenzen haben, wenn es mit einem Argument aufgerufen wird, das mitgenommen werden soll. With: In diesem Fall ist es viel besser, seq_along zu verwenden.

seq_along: Anstelle von seq(along.with(.))

seq_along(c(10,20,30))
# [1] 1 2 3

Hoffe das hilft.

62
Arun

Verwenden Sie den Code

x = seq(0,100,5) #this means (starting number, ending number, interval)

die Ausgabe wird sein 

[1]   0   5  10  15  20  25  30  35  40  45  50  55  60  65  70  75
[17]  80  85  90  95 100
1
sumit

Normalerweise möchten wir unseren Vektor in eine Reihe von Intervallen unterteilen. In diesem Fall können Sie eine Funktion verwenden, bei der (a) ein Vektor und (B) die Anzahl der Intervalle ist. (Nehmen wir an, Sie wollen 4 Intervalle)

a <- 1:10
b <- 4

FunctionIntervalM <- function(a,b) {
  seq(from=min(a), to = max(a), by = (max(a)-min(a))/b)
}

FunctionIntervalM(a,b)
# 1.00  3.25  5.50  7.75 10.00

Daher haben Sie 4 Intervalle:

1.00 - 3.25 
3.25 - 5.50
5.50 - 7.75
7.75 - 10.00

Sie können auch eine Ausschneidefunktion verwenden 

  cut(a, 4)

# (0.991,3.25] (0.991,3.25] (0.991,3.25] (3.25,5.5]   (3.25,5.5]   (5.5,7.75]  
# (5.5,7.75]   (7.75,10]    (7.75,10]    (7.75,10]   
#Levels: (0.991,3.25] (3.25,5.5] (5.5,7.75] (7.75,10]
0
Anya Sti