【问题标题】:Issue building a function using Lavaan syntax使用 Lavaan 语法构建函数的问题
【发布时间】:2020-11-13 06:02:51
【问题描述】:

我正在尝试为我使用 lavaan 编写一个非常简单的函数,以便从一个非常简单的模型中获得效果。代码如下:

library(lavaan)
states <- as.data.frame(state.x77)

Effect<-function(dataset, X1, Y)
{
Model<-'
X1 ~~ X1; Y ~~Y;
Y ~ X1;'
fit<-lavaan(Model, dataset)
return(summary(fit))
}

当我调用 Effect(states, Murder, Income) 或 Effect(states, "Murder", "Income") 时,会显示以下消息:

“熔岩中的错误(模型,数据集): lavaan 错误:数据集中缺少观察到的变量:Y X1"

当我写以下内容时一切都很好:

Model<-'
Murder ~~ Murder; Income ~~ Income;
Income ~ Murder;'
fit<-lavaan(Model, states)
summary(fit)

我的猜测是我的 Effect 函数中的 lavaan() 可能确实使用了数据集“状态”,但它并没有将 X1 和 Y 等同于谋杀和收入。有人知道我该如何解决这个问题吗?

非常感谢,

【问题讨论】:

  • 你能提供一个 state.x77 数据框的样例吗?如果没有这些数据,您的代码将无法重现。谢谢!

标签: r function syntax r-lavaan


【解决方案1】:

问题是,变量YX1 确实不是state.x77 数据的一部分。最直接的方法是让 Effect 函数使用 X1Y 作为字符参数粘贴模型语法;例如

data(state, package = "datasets")
states <- as.data.frame(state.x77)

Effect<-function(dataset, X1, Y)
{
  Model<-
  paste0(X1, "~~", X1, ";\n",
         Y, "~~", Y, ";\n",
         Y, "~~", X1, ";")  
  fit<-lavaan::lavaan(Model, dataset)
  return(lavaan::summary(fit))
}

现在Effect(states, X1 = "Murder", Y = "Income") 应该会提供所需的结果。

【讨论】:

    猜你喜欢
    • 2021-10-20
    • 2021-07-17
    • 1970-01-01
    • 1970-01-01
    • 2021-04-14
    • 2022-06-18
    • 2020-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多