Проблема в вашем случае заключается в том, что вы на самом деле не заменяете x
или y
на tst
. См., Например,
library(stringr)
anexample <- function(tst) {
model <- 'tst3 ~ + tst1 + tst2'
model <- str_replace_all(model, 'tst', tst)
return(model)
}
lapply(listoftype, FUN = anexample)
[[1]]
[1] "x3 ~ + x1 + x2"
[[2]]
[1] "y3 ~ + y1 + y2"
Итак, должно работать следующее:
anexample <- function(tst) {
model <- 'tst3 ~ + tst1 + tst2'
model <- str_replace_all(model, 'tst', tst)
runmodel <- lavaan::sem(model,
data = PoliticalDemocracy,
missing = "default",
estimator = "ML",
se = "default",
)
lavaan::summary(runmodel, fit.measures=FALSE)
modelsummary <-lavaan::summary(runmodel, fit.measures=FALSE)
write(paste(utils::capture.output(summary(runmodel)),
collapse = "\n"), file = paste0("output_",tst, '.txt'))
tst <-as.data.frame(modelsummary)
}
lapply(listoftype, FUN = anexample)
Чтобы получить результаты с соответствующим именем, взгляните на следующее в качестве примера:
anexample <- function(tst) {
model <- str_replace_all('tst3 ~ + tst1 + tst2', 'tst', tst)
runmodel <- lavaan::sem(model,
data = PoliticalDemocracy,
missing = "default",
estimator = "ML",
se = "default",
)
modelsummary <-lavaan::summary(runmodel, fit.measures=FALSE)
return(as.data.frame(modelsummary))
}
output <- setNames(lapply(listoftype, anexample), listoftype)
str(output)
List of 2
$ x:'data.frame': 6 obs. of 8 variables:
..$ PE.lhs : chr [1:6] "x3" "x3" "x3" "x1" ...
..$ PE.op : chr [1:6] "~" "~" "~~" "~~" ...
...
$ y:'data.frame': 6 obs. of 8 variables:
..$ PE.lhs : chr [1:6] "y3" "y3" "y3" "y1" ...
..$ PE.op : chr [1:6] "~" "~" "~~" "~~" ...
...
Это дает вам список с x
и y
. Чтобы «переместить» это в глобальную среду, вы можете дополнительно использовать list2env(output, globalenv())
.