2017-03-16 1 views
0

Ich habe einen zwei Wert 3 und 5Nummer hinzufügen repeatdly zum Vektor und doppelten Vektor

gefühl Vektor

num1 <- 3 
num2 <- 12 
a <- c(num1, num2) 

ich hinzufügen möge Nummer (12) zu Vektor „a“ und auch ich will neue Vektor mit Wiederholung machen, und fügen

wie folgt aus:

3,12, 15,24, 27,36, 39,48 .... 

Wiederholungszahl "n" ist 6

Ich habe keine Ahnung.

Antwort

2

Hier sind zwei Methoden in der Basis R.

mit outer Sie

c(outer(c(3, 12), (12 * 0:4), "+")) 
[1] 3 12 15 24 27 36 39 48 51 60 

oder mit sapply tun könnte, können Sie explizit Schleife durch und die Paare von Summen zu berechnen.

c(sapply(0:4, function(i) c(3, 12) + (12 * i))) 
[1] 3 12 15 24 27 36 39 48 51 60 

outer liefert eine Matrix, wo jedes Paar von Elementen der beiden Vektoren addiert werden. c wird verwendet, um einen Vektor zurückzugeben. sapply durchläuft 0: 4 und berechnet dann die elementweise Summe. In diesem Fall wird auch eine Matrix zurückgegeben, sodass c zum Zurückgeben eines Vektors verwendet wird.

1

Hier ist eine etwas generische Funktion, die a als Eingabe Ihrer ursprünglichen Vektor nimmt, um die Zahl 12 hinzufügen und n,

f1 <- function(vec, x, n){ 
    len1 <- length(vec) 
    v1 <- sapply(seq(n/len1), function(i) x*i) 
    v2 <- rep(v1, each = n/length(v1)) 
    v3 <- rep(vec, n/len1) 
    return(c(vec, v3 + v2)) 
} 

f1(a, 12, 6) 
#[1] 3 12 15 24 27 36 39 48 

f1(a, 11, 12) 
#[1] 3 12 14 23 25 34 36 45 47 56 58 67 69 78 

f1(a, 3, 2) 
#[1] 3 12 6 15 

EDIT

Wenn durch n=6 meinen Sie 6-mal die ganzer Vektor dann,

f1 <- function(vec, x, n){ 
    len1 <- length(vec) 
    v1 <- sapply(seq(n), function(i) x*i) 
    v2 <- rep(v1, each = len1) 
    v3 <- rep(vec, n) 
    return(c(vec, v3 + v2)) 
} 

f1(a, 12, 6) 
#[1] 3 12 15 24 27 36 39 48 51 60 63 72 75 84 
0

Verwenden rep zum Wiederholen und cumsum für den Zusatz:

n = 6 
rep(a, n) + cumsum(rep(c(12, 0), n)) 
# [1] 15 24 27 36 39 48 51 60 63 72 75 84 
Verwandte Themen