Nothing
### sCorrect-getIndexOmega.R ---
##----------------------------------------------------------------------
## Author: Brice Ozenne
## Created: nov 25 2019 (10:52)
## Version:
## Last-Updated: jan 17 2022 (14:26)
## By: Brice Ozenne
## Update #: 103
##----------------------------------------------------------------------
##
### Commentary:
##
### Change Log:
##----------------------------------------------------------------------
##
### Code:
## * Documentation
#' @title Identify the Endogenous Variables
#' @description Identify the endogenous variables, i.e., returns a vector with length the number of observations,
#' whose values are the index of the repetitions.
#' @name getIndexOmega
#'
#' @param object a \code{lvmfit} object.
#' @param data dataset.
#' @param ... [internal] Only used by the generic method.
#'
#' @concept extractor
#' @keywords internal
`.getIndexOmega` <-
function(object, data, ...) UseMethod(".getIndexOmega")
## * Examples
#' @examples
#' \dontrun{
#' #### simulate data ####
#' set.seed(10)
#' dW <- sampleRepeated(10, format = "wide")
#' set.seed(10)
#' dL <- sampleRepeated(10, format = "long")
#' dL$time2 <- paste0("visit",dL$time)
#'
#' #### lvm model ####
#' e.lvm <- estimate(lvm(c(Y1,Y2,Y3) ~ 1*eta + X1, eta ~ Z1), data = dW)
#' ## lavaSearch2:::.getIndexOmega(e.lvm, data = dW)
#' }
## * .getIndexOmega.lvm
#' @rdname getIndexOmega
.getIndexOmega.lvm <- function(object, data, ...){
## ** check missing value in exogenous variables
name.exogenous <- exogenous(object)
missing.var <- name.exogenous[name.exogenous %in% names(data) == FALSE]
if(length(missing.var)>0){
cat2bin <- var2dummy(object$model, var = names(data), data = data)
name.exogenous[name.exogenous %in% missing.var] <- names(cat2bin)[cat2bin %in% missing.var]
name.exogenous <- unique(name.exogenous)
}
test.na <- Reduce("+",lapply(name.exogenous, function(iCol){is.na(data[[iCol]])}))
if(any(test.na>0)){
stop("Does not support missing values in exogenous variables. \n",
"Consider removing the corresponding rows in the dataset. \n")
}
## ** index.Omega
n.obs <- NROW(data)
name.endogenous <- endogenous(object)
n.endogenous <- length(name.endogenous)
M.index <- matrix(1:n.endogenous, nrow = n.obs, ncol = n.endogenous, byrow = TRUE)
index.na <- which(is.na(as.data.frame(data)[,name.endogenous]))
if(length(index.na)>0){
M.index[index.na] <- NA
}
return(as.double(t(M.index)))
}
## * .getIndexOmega.lvmfit
#' @rdname getIndexOmega
.getIndexOmega.lvmfit <- .getIndexOmega.lvm
######################################################################
### sCorrect-getIndexOmega.R ends here
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.