@@ -475,18 +475,19 @@ replace_observed(model, new_df; semterm_column = :group)
475475"""
476476function replace_observed end
477477
478- function replace_observed (sem:: Sem , data:: Union{SemObserved, AbstractMatrix} )
478+ function replace_observed (sem:: Sem , data:: Union{SemObserved, AbstractMatrix} ; kwargs ... )
479479 nsem_terms (sem) > 1 && throw (
480480 ArgumentError (
481481 " Model contains $(nsem_terms (sem)) SEM terms. " *
482482 " Use a Dict{Symbol} or a DataFrame with `semterm_column` to provide per-term data." ,
483483 ),
484484 )
485- updated_terms = Tuple (replace_observed (term, data) for term in loss_terms (sem))
485+ updated_terms =
486+ Tuple (replace_observed (term, data; kwargs... ) for term in loss_terms (sem))
486487 return Sem (updated_terms... )
487488end
488489
489- function replace_observed (sem:: Sem , data:: AbstractDict{Symbol} )
490+ function replace_observed (sem:: Sem , data:: AbstractDict{Symbol} ; kwargs ... )
490491 term_ids = Set (
491492 if ! isnothing (id (term))
492493 id (term)
@@ -507,20 +508,20 @@ function replace_observed(sem::Sem, data::AbstractDict{Symbol})
507508 term_data = get (data, tid, nothing )
508509 isnothing (term_data) &&
509510 throw (ArgumentError (" No data provided for SEM term :$tid " ))
510- return replace_observed (term, term_data)
511+ return replace_observed (term, term_data; kwargs ... )
511512 end
512513 return Sem (Tuple (updated_terms)... )
513514end
514515
515- function replace_observed (sem:: Sem , data:: AbstractVector )
516+ function replace_observed (sem:: Sem , data:: AbstractVector ; kwargs ... )
516517 nsem = nsem_terms (sem)
517518 nsem == length (data) || throw (
518519 ArgumentError (
519520 " Length of data ($(length (data)) ) does not match number of SEM terms ($nsem )" ,
520521 ),
521522 )
522523 updated_terms = map (enumerate (loss_terms (sem))) do (i, term)
523- issemloss (term) ? replace_observed (term, data[i]) : term
524+ issemloss (term) ? replace_observed (term, data[i]; kwargs ... ) : term
524525 end
525526 return Sem (Tuple (updated_terms)... )
526527end
@@ -529,6 +530,7 @@ function replace_observed(
529530 sem:: Sem ,
530531 data:: AbstractDataFrame ;
531532 semterm_column:: Union{Symbol, Nothing} = nothing ,
533+ kwargs... ,
532534)
533535 if isnothing (semterm_column)
534536 # single-term shortcut
@@ -538,7 +540,8 @@ function replace_observed(
538540 " Provide `semterm_column` to specify which DataFrame column identifies the groups." ,
539541 ),
540542 )
541- updated_terms = Tuple (replace_observed (term, data) for term in loss_terms (sem))
543+ updated_terms =
544+ Tuple (replace_observed (term, data; kwargs... ) for term in loss_terms (sem))
542545 return Sem (updated_terms... )
543546 end
544547
@@ -547,7 +550,7 @@ function replace_observed(
547550 g[semterm_column] => group_data for
548551 (g, group_data) in pairs (groupby (data, semterm_column))
549552 )
550- return replace_observed (sem, terms_data)
553+ return replace_observed (sem, terms_data; kwargs ... )
551554end
552555
553556# #############################################################
0 commit comments