2015-09-24 6 views
0

Я пытаюсь построить функцию, которая вычисляет некоторые отклонения, используя пакет опроса. Проблема заключается в том, что мне нужно вставить имя переменной (не значения переменных) в определенной функции (svyby)Вставить имя переменной в функцию в R

Это что-то вроде этого:

myfun=function(variable) { 
svyby(~variable,~subpop,design,svymean) 
} 

myfun(P16) 

Это дает мне ошибку. Я также попытался с

*base[,variable]* 

вместо

*variable* 

проблема здесь base[,variable] дает мне вектор со значениями переменной, но мне нужно имя переменной для чтения в дизайне объект. То, что я имею в виду, мне нужно, чтобы функция вставить имя как этот

svyby(~P16,~subpop,design,svymean) 

Я буду признателен за любую помощь, спасибо заранее, Гонсало

ответ

4

Похоже, нужна формула. Вы можете вставить "~" в строку и использовать as.formula, например:

myfun = function(variable) { 
    svyby(as.formula(paste("~", variable)), 
      ~subpop, design, svymean) 
} 

А потом называют это так: myfun("P16"). Обратите внимание, что вам нужно будет использовать указанное имя столбца, потому что вы рассматриваете его как строку.

В качестве альтернативы, вы можете иметь ваши функции взять формулу:

myfun2 = function(formula) { 
    svyby(formula, 
      ~subpop, design, svymean) 
} 

И называть это так: myfun2(~P16).

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