2010-06-01 16 views
3

Возможно ли передать только имя переменной в вызове функции и использовать ее как таковую в функции?Передать имя переменной функции в r

псевдокод:

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) 

, что я бы хотел сделать, это

q(e) 

и вернулись

не-е, е, е, не-е, не-е , e, e, не-e, не-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

В четвертой строке должно быть 'б <- (ш% в% a2 | w% в% a7) 'или' b <-w% в% c (a2, a7) '. И вы используете 'A' как аргумент и' a' в коде. – Marek

ответ

3

Вы можете использовать get

Например

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

EDIT: в Айдан Калли правильно говорит, то следует вызвать функцию q("e") (т.е. со строкой)

+1

Обратите внимание также, что OP должен вызывать 'q (" e ")' вместо 'q (e)'. –

+0

@ Эйдан Калли: Хорошо, я обновлю ответ – nico

3

Вы, вероятно, следует выбрать другое имя для вашей функции, кроме «д» - иначе вы никогда не будете в состоянии закончить;)

Смежные вопросы