Там может быть более простой способ сделать это (и не обращая внимания, если это имеет смысл делать это) - один из способов вы можете сделать это, удалив узлы из объекта до построения графика.
Используя пример Mplus из вашего вопроса Rotate Edges in semPaths/qgraph
library(qgraph)
library(semPlot)
library(MplusAutomation)
# This downloads an output file from Mplus examples
download.file("http://www.statmodel.com/usersguide/chap5/ex5.8.out",
outfile <- tempfile(fileext = ".out"))
# Unadjusted plot
s <- semPaths(outfile, intercepts = FALSE)
В приведенном выше вызове semPaths
, outfile
имеет класс character
, поэтому линия (ближе к началу кода semPaths
)
if (!"semPlotModel" %in% class(object))
object <- do.call(semPlotModel, c(list(object), modelOpts))
возвращает объект с semPlot:::semPlotModel.mplus.model(outfile)
. Это класс "semPlotModel"
.
Итак, идея состоит в том, чтобы сначала создать этот объект, исправить его, а затем передать этот объект semPaths
.
# Call semPlotModel on your Mplus file
obj <- semPlot:::semPlotModel.mplus.model(outfile)
# obj <- do.call(semPlotModel, list(outfile)) # this is more general/not just for Mplus
# Remove one factor (F1) from [email protected] - need to check lhs and rhs columns
idx <- apply([email protected][c("lhs", "rhs")], 1, function(i) any(grepl("F1", i)))
[email protected] <- [email protected][!idx, ]
class(obj)
obj
теперь класса "semPlotModel"
и могут быть переданы непосредственно semPaths
s <- semPaths(obj, intercepts = FALSE)
Вы можете использовать str(s)
, чтобы увидеть структуру этого возвращается объект.
Показать структуру данных. Попробуйте опубликовать вывод 'str (x)' или даже лучше, сделайте [воспроизводимый пример] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example). –
Я только что загрузил OUTfile из Mplus. Спасибо за ваш совет :) –
Я предлагаю вам «вставить» код в свой ответ, чтобы вопрос не устарел, как только вы удалите файл из Dropbox. –