@@ -2339,21 +2339,22 @@ X_olsc <- function(mf, vary, args) {
23392339 fm <- paste(" ~ " , paste(colnames(mf )[colnames(mf ) != vary ],
23402340 collapse = " +" ), sep = " " )
23412341 fac <- sapply(mf [colnames(mf ) != vary ], is.factor )
2342+ DUMMY <- FALSE
23422343 if (any(fac )){
23432344 if (! is.list(args $ contrasts.arg )){
23442345 # # first part needed to prevent warnings from calls such as
23452346 # # contrasts.arg = contr.treatment(4, base = 1):
2346- if (is.character(args $ contrasts.arg ) &&
2347- args $ contrasts.arg == " contr.dummy" ){
2347+ if (DUMMY <- ( is.character(args $ contrasts.arg ) &&
2348+ args $ contrasts.arg == " contr.dummy" )) {
23482349 if (! args $ intercept )
23492350 stop(' "contr.dummy" can only be used with ' ,
23502351 sQuote(" intercept = TRUE" ))
23512352 fm <- paste(fm , " -1" )
2352- } else {
2353- txt <- paste(" list(" , paste(colnames(mf )[colnames(mf ) != vary ][fac ],
2353+ args $ contrasts.arg <- " contr.treatment"
2354+ }
2355+ txt <- paste(" list(" , paste(colnames(mf )[colnames(mf ) != vary ][fac ],
23542356 " = args$contrasts.arg" , collapse = " , " )," )" )
2355- args $ contrasts.arg <- eval(parse(text = txt ))
2356- }
2357+ args $ contrasts.arg <- eval(parse(text = txt ))
23572358 } else {
23582359 # # if contrasts are given as list check if "contr.dummy" is specified
23592360 if (any(args $ contrasts.arg == " contr.dummy" ))
@@ -2366,7 +2367,7 @@ X_olsc <- function(mf, vary, args) {
23662367 args $ contrasts.arg <- NULL
23672368 }
23682369 X <- model.matrix(as.formula(fm ), data = mf , contrasts.arg = args $ contrasts.arg )
2369- if (! is.null( args $ contrasts.arg ) && args $ contrasts.arg == " contr.dummy " )
2370+ if (DUMMY )
23702371 attr(X , " contrasts" ) <- lapply(attr(X , " contrasts" ),
23712372 function (x ) x <- " contr.dummy" )
23722373 contr <- attr(X , " contrasts" )
0 commit comments