2010-06-01 8 views
3

Est-il possible de transmettre simplement un nom de variable dans un appel de fonction et de l'utiliser tel quel dans la fonction ??Transmettre le nom d'une variable à une fonction dans r

pseudocode:

q<-function(A){ 
    b<-(w%in%A.2|w%in%A.7) 
    factor(b,levels=c(F,T),labels=c("non-"A,A))} 


w<-c(0:10) 
e.2<-c(1,2) 
e.7<-c(6,7) 

ce que faire Id aiment est

q(e) 

et sont retournés

non e, e, e, non e, non e , e, e, non-e, non-e

// M


q<-function(A) { 
    a2<-get(paste(a,".2",sep="")) 
    a7<-get(paste(a,".7",sep="")) 
    b<-(w%in%a2|%in%a7) 
    factor(b,levels=c(F,T),labels=c(paste("non-",a,sep=""),a)) 
} 

q("e") 

Thx,

M

+1

En quatrième ligne devrait être 'b <- (w% dans% a2 | w% dans% a7) 'ou' b <-w% dans% c (a2, a7) '. Et vous utilisez 'A' comme argument et' a' dans le code. – Marek

Répondre

3

Vous pouvez utiliser get

Par exemple

var1 <- get(paste(e, ".2", sep="")) 
var2 <- get(paste(e, ".7", sep="")) 

EDIT: comme Aidan Cully dit correctement alors vous devriez appeler votre fonction q("e") (c'est à dire avec une chaîne)

+1

Notez également que l'OP devrait appeler 'q (" e ")' au lieu de 'q (e)'. –

+0

@Aidan Cully: Bon point, je vais mettre à jour la réponse – nico

3

Vous devriez probablement choisir un autre nom pour votre fonction autre que « q » - sinon vous ne serez jamais en mesure de terminer;)

Questions connexes