2016-05-18 2 views
0

Angenommen, ich habe einen Vektor:Wie ändert man Vektorelemente durch eine Funktion abhängig vom Elementindex in R?

my.vector <- rep(0, length.out = 100) 

Ich mag jedes Element des Vektors durch einen neuen Wert ändern, auf dem Elementindex abhängig.

Natürlich kann ich eine for-Schleife verwenden:

for(i in 1:length(my.vector)) { 
    my.vector[[i]] <- my.vector[[i]] + i * 0.25 
} 

Aber ich bin sicher, es gibt bessere Möglichkeiten, diese

Mit sapply in R. zu tun?

sapply(seq_along(my.vector), function(i) my.vector[[i]] + i * 0.25) 

OK, ich bekomme das gleiche Ergebnis, aber es ist weniger lesbar. Kennst du andere sauberere Wege?

Antwort

1

eine große Anzahl von Möglichkeiten gibt es, diesen Ansatz. Eine der kanonischen Methoden verwendet seq:

myVectorSeq <- my.vector + seq(.25, 25, length.out=length(my.vector)) 

Sie können @ erreichen lorenzo-Rossis Methode seq_len:

myVectorSeq <- my.vector + (seq_len(length(my.vector)) * .25) 

seq_len, die schneller als die flexibleren seq Funktion ist.

1

einfach einen neuen Vektor erstellen und dann eine vektorisiert Summe verwenden:

sums_vec = (1:length(my.vector)) * 0.25 
my.vector + sums_vec 
1

Wir verwenden seq_along

my.vector + seq_along(my.vector) *0.25 
Verwandte Themen