Как зациклить строки фрейма данных, содержащие перестановки имен переменных, при выполнении анализа посредничества с lavaan
?
Скажем, у меня есть 4 переменные var1
, var2
, var3
,var4
:
df<- data.frame(var1 = rnorm(100),
var2 = rnorm(100),
var3 = rnorm(100),
var4 = rnorm(100))
Использование gtools::permutations()
Я сохраняю все возможные перестановки 4 переменных в наборах по 3:
permut <-
gtools::permutations(n = 4, r = 3, v = names(df), repeats.allowed = FALSE)
colnames(permut) <- c("Y", "X", "M")
> head(permut)
Y X M
[1,] "var1" "var2" "var3"
[2,] "var1" "var2" "var4"
[3,] "var1" "var3" "var2"
[4,] "var1" "var3" "var4"
[5,] "var1" "var4" "var2"
[6,] "var1" "var4" "var3"
Затем я устанавливаю модель медитации, используя lavaan
синтаксис, где меня интересует опосредованное влияние M
на отношения между X
и Y
:
mod <- "
M ~ a * X
Y ~ c * X + b * M
ind := a*b
tot := c + (a*b)
"
Я хочу запустить модель и сохранить ее результаты для будущей проверки:
library(lavaan)
library(dplyr)
#fit the model
fit <- sem(mod, df, se = "robust")
#save results
result <-
parameterestimates(fit) %>% filter(op != "~~")
Мой вопрос здесь такой:
Как указать R использовать в качестве Y,X,M
имена переменных из каждой строки permut
, соответствовать моделииспользовать данные из df
и синтаксис модели из mod
и в конечном итоге сохранять результаты для каждой подгонки модели?
Приведенный выше код является простейшим из возможных сценариев, который я хотел бы использовать для запуска более сложных моделей.способ.
Мне известны ответы о циклической строкеar модели различных переменных: цикл по всем возможным комбинациям , цикл по комбинациям терминов регрессионной модели , Цикл линейной регрессии для каждой независимой переменной индивидуально для зависимых , ивозможно, ближайший: Как использовать ссылочные переменные по символьной строке в формуле? , но все же я застрял и не смог решить эту проблему в выходные дни.