Esmail Bonakdarian wrote:
> Hello,
>
> Still a newbie with R, though I have learned a lot from reading
> this list. I'm hoping someone can help with this question:
>
> I have two vectors, one for variables, and one for bits.
>
> I want to build a string (really a formula) based on the values in my
> vector of 1s and 0s in bits. If I have a one, I want to include the
> corresponding entry in the vars vector, otherwise ignore it. Of course
> the "bits" vector will not stay the same.
>
> So for example:
>
> vars=c('X.1', 'X.2', 'X.3', 'X.4', 'X.5')
>
> bits=c(1, 0, 1, 1, 0)
> ones=which(bits==1)
>
> should yield:
>
> "X.1 + X.3 + X.4"
>
> where as
>
> bits=c(1, 1, 0, 0, 0)
>
> would yield
>
> "X.1 + X.2"
>
> the "which" operator gives me the index values, is there an easy and
> *efficient* way to build this string so that I can pass it on to glm?
> I can probably hack some ugly code together to do this, but it won't
> be efficient, and it won't be elegant :-)
>
> Can anyone help?
>
> Thanks!
Depending upon other factors, there may be a better and more general approach to what you are trying to do relative to selecting subsets of IV's. However, given the information you have provided:
vars <- c('X.1', 'X.2', 'X.3', 'X.4', 'X.5') bits <- c(1, 0, 1, 1, 0)
> paste(vars[bits == 1], collapse = " + ") [1] "X.1 + X.3 + X.4"
bits <- c(1, 1, 0, 0, 0)
> paste(vars[bits == 1], collapse = " + ") [1] "X.1 + X.2"
You will then need to use as.formula() to coerce the resultant vectors before passing them to the model function.
HTH, Marc Schwartz
Archive maintained by Robert King, hosted by
the discipline of
statistics at the
University of Newcastle,
Australia.
Archive generated by hypermail 2.2.0, at Tue 06 May 2008 - 20:30:43 GMT.
Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.