2017-08-14 3 views
0

Comment est-ce que je vectorise une fonction R construite pour que les séquences puissent être calculées?Vectorisation avec boucle externe

La fonction d'origine est:

A = function(j,x){ 
    if(x<0 & x>j){stop(print(1))} 
    else{ 
    s=0 
    for(k in 0:x){ 
     s = s + ((j-1) * ((2)^k) * x) 
    } 
    } 
return(s) 
} 

et je veux ajouter une boucle externe qui me permet d'exécuter une (j, x) en tant que vecteur, où j = 3 et x = seq (-2: 2)

+1

Peut-être 'mapply' est ce que vous recherchez? – ulfelder

+1

Vous voulez améliorer la fonction pour pouvoir traiter un vecteur uniquement pour 'x', ou aussi pour' j'? – LAP

Répondre

2

La méthode la plus simple pour vectoriser une fonction dans R est Vectorize. Notez que la fonction résultante peut ne pas être très efficace.

Av <- Vectorize(A, vectorize.args = "x") 

Av(j = 3, x = seq(-2, 2)) 
# [1] -7 -3 0 6 28 
+0

Pas exactement la méthode que je cherchais, mais j'ai réussi à comprendre comment mettre la fonction dans une boucle externe. Merci quand même – R247