The solutions offered are fine but perhaps not quite directly what was asked for.
A careful reading seems to suggest they simply want a way to index the data.frame multiple ways by creating a set of vectors containing zero or one. He seems to want a solution for a specific case. This seems like it can be solved fairly easily with ifelse() as in: CLASS1 <- ifelse(Beth$CLASS==1, 1, 0) CLASS2 <- ifelse(Beth$CLASS==2, 1, 0) CLASS4 <- ifelse(Beth$CLASS==4, 1, 0) CLASS7 <- ifelse(Beth$CLASS==7, 1, 0) CLASS9 <- ifelse(Beth$CLASS==9, 1, 0) Of course a more general solution could consider arbitrary factors and create either custom names for resulting vectors or create a list of such vectors or other data structures like the matrix one being provided. And, of course, sometimes you do not choose this way of having a "Boolean vector" to be used as an index but can use standard R (or packages like dplyr) to select the rows needed with a query. -----Original Message----- From: R-help <r-help-boun...@r-project.org> On Behalf Of Jeff Newmiller via R-help Sent: Tuesday, September 2, 2025 4:16 AM To: r-help@r-project.org Subject: Re: [R] Extracting portions of one vector to create others This is an extremely common transformation in regression, and it has a dedicated function (model.matrix) for accomplishing it in R. It does presume you have a bit of familiarity with the formula literal type in R... which is created using the tilde character (e.g. ~ CLASS). Also, since including an intercept term in a regression is the default, if you only want the columns you described then you need to inform the function that you want to leave the intercept out (~ CLASS - 1). It doesn't apply this discrete transformation unless the referenced variable is a factor variable, so I convert it from integer type in the short example below. Beth <- data.frame( CLASS = c( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2 , 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 4, 4, 4, 4 , 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 , 7, 7, 7, 7, 7, 7, 7, 7, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 1)) Beth$CLASS <- as.character(Beth$CLASS) result <- model.matrix( ~ CLASS - 1, Beth) result Note that the result is a matrix, not a data frame so you will have to use brackets and a blank for the row spec if you want to access one column at a time: result[, "CLASS1"] Refer to the help page for more on this function: ?model.matrix On September 1, 2025 7:09:56 AM PDT, Paul Zachos <p...@acase.org> wrote: >Dear Colleagues, > >I have a vector which indicates membership of subjects in one of 5 Classes > >Beth$CLASS > [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 >[37] 2 2 2 2 2 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 7 7 7 7 7 7 7 7 7 7 7 >[73] 7 7 7 7 7 7 7 7 7 9 9 9 9 9 9 9 9 9 9 9 9 9 9 1 > >For purposes of an analysis (using linear models based on Ward and Jennings) I >would like to create 5 new vectors > >The values in vector CLASS1 will be ‘1’ if the corresponding value in >Beth$CLASS is equal to ‘1’; ‘0’ otherwise > >The values in vector CLASS2 will be ‘1’ if the corresponding value in >Beth$CLASS is equal to ‘2’; ‘0’ otherwise > >The values in vector CLASS4 will be ‘1’ if the corresponding value in >Beth$CLASS is equal to ‘4’; ‘0’ otherwise > >The values in vector CLASS7 will be ‘1’ if the corresponding value in >Beth$CLASS is equal to ‘7’; ‘0’ otherwise > >The values in vector CLASS9 will be ‘1’ if the corresponding value in >Beth$CLASS is equal to ‘9’; ‘0’ otherwise > >How would I go about this using R > >Thank you >_________________ >Paul Zachos, PhD >Director, Research and Evaluation >Association for the Cooperative Advancement of Science and Education (ACASE) >110 Spring Street Saratoga Springs, NY 12866 | >p...@acase.org | www.acase.org > > > > > > [[alternative HTML version deleted]] > >______________________________________________ >R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see >https://stat.ethz.ch/mailman/listinfo/r-help >PLEASE do read the posting guide https://www.R-project.org/posting-guide.html >and provide commented, minimal, self-contained, reproducible code. -- Sent from my phone. Please excuse my brevity. ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide https://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide https://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.