【发布时间】:2019-02-25 09:13:50
【问题描述】:
在使用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 使用permut 的每一行中的Y,X,M 变量名称,使用来自df 的数据和来自mod 的模型语法拟合模型并最终存储结果适合每个模型?
上面的代码是最简单的场景,我想用同样的方式运行更复杂的模型。
我知道有关循环不同变量的线性模型的答案:loop over all possible combinations、Looping over combinations of regression model terms、Linear Regression loop for each independent variable individually against dependent,可能是最接近的答案:How to use reference variables by character string in a formula?,但我仍然卡住了,无法解决这个周末。
【问题讨论】:
标签: r loops automation purrr r-lavaan