2017-01-31 4 views
1

Я использую функцию mplusObject и вместо того, чтобы включать имя файла в качестве аргумента, я хочу иметь возможность запускать цикл с помощью этого кода и позволить автоматически вводить имя файла R (см. VECTOR_1 в конце кода). Это короткая и упрощенная версия кода:Использование вектора внутри функции в качестве аргумента

mymodel <- mplusObject(
TITLE = "Some analysis;", 
VARIABLE = " 
    usevariables = x1 x2 x3 c_age c_agesq;", 
MODEL = " 
    att BY x1 x2 x3; 
    att ON c_age c_agesq;", 
SAVEDATA = " 
    save = fscores; 
    file = VECTOR_1;", 
    rdata = selectedgroup) 

Функция mplusObject (в пакете MplusAutomation) имеет несколько аргументов, в том числе один, где он дает имя файла для сохранения данных, полученных с помощью модели (к концу код выше). Вместо имени файла я написал VECTOR_1.

Я хотел бы определить содержание VECTOR_1 (VECTOR_1 <- "filename") вне функции. Исходя из Stata, я думал, что это будет легко (используя что-то похожее на то, что Stata вызывает локальные макросы). Но мне это не удается. Как показать R, что VECTOR_1 является вектором и не должен восприниматься как фактический аргумент?

ответ

0

Вы можете сохранить в Пути к файлам вектора с

myvector <- c("filepath1", "filepath2", ...) 

и петлей над ним с lapply, чтобы сохранить все выходы в списке:

mymodels <- lapply(myvector, function(x) mplusObject(all other fixed arguments, file = x)) 
+0

Спасибо @Leo P.! Я использую простой номер до 30, «filename_1» ... «filename_30». Могу ли я использовать что-то вроде этого, с i going fom 1-30: 'myvector <- paste (" ~/filename ", i, sep =" ")'? – cibr

+0

try 'myvector <- paste0 (" ~/filename_ ", 1:30)' for "filename_1" to "filename_30" – LAP

+0

Большое спасибо. Я попробую это позже. Если это сработает, я укажу, что он решил мою проблему. – cibr