[R] Conditional inclusion of an element in an R object

MacQueen, Don macqueen1 at llnl.gov
Fri Jan 10 22:01:03 CET 2014


Apologies, but all that ifelse() stuff is too hard to follow.

What I would do is compute a character vector of column names to keep,
then do

  a1[ , names.to.keep]

-Don

-- 
Don MacQueen

Lawrence Livermore National Laboratory
7000 East Ave., L-627
Livermore, CA 94550
925-423-1062





On 1/10/14 12:53 PM, "Santosh" <santosh2005 at gmail.com> wrote:

>Dear Rxperts...
>
>I would like to conditionally include an element (as a column) in a
>dataframe. Please see the  sample code below:
>
>There is a correction to the earlier post.. my apologies...
>a1 <- data.frame(P=rep(1,10),Qr=LETTERS[1:10],b=letters[1:10],
>R=rep(c("A","B"),each=5))
>
> lc1 <- list(C1 = "P",C2 =
>ifelse(is.element("Q",names(a1)),"Q",ifelse(is.element("b",names(a1)),"b",
>NULL)),C3="R")
> lc2 <- list(C1 = "P",C2 =
>ifelse(is.element("Q",names(a1)),"Q",ifelse(is.element("b",names(a1)),"b",
>NULL)),
>C3=ifelse(is.element("Ra",names(a1)),"Ra",NULL))
>*The error for the above:*
>Error in ifelse(is.element("Ra", names(a1)), "Ra", NULL) :
>  replacement has length zero
>In addition: Warning message:
>In rep(no, length.out = length(ans)) :
>  'x' is NULL so the result will be NULL
>
>a2 <- subset(a1, sel=unlist(lc1)) # this works
>a3 <- subset(a1, sel=unlist(lc2)) # this doesn't work
>
>Is there a way to dynamically include columns in a dataframe?
>
>Regards,
>santosh
>
>
>On Fri, Jan 10, 2014 at 12:45 PM, Santosh <santosh2005 at gmail.com> wrote:
>
>> Dear Rxperts...
>>
>> I would like to conditionally include an element (as a column) in a
>> dataframe. Please see the  sample code below:
>>
>> a1 <-
>> 
>>data.frame(P=rep(1,10),Qr=LETTERS[1:10],b=letters[1:10],R=rep(c("A","B"),
>>each=5))
>>
>>  lc1 <- list(C1 = "P",C2 =
>> 
>>ifelse(is.element("Q",names(a1)),"Q",ifelse(is.element("b",names(a1)),"b"
>>,NULL)),C3="R")
>>  lc2 <- list(C1 = "P",C2 =
>> 
>>ifelse(is.element("Q",names(a1)),"Q",ifelse(is.element("b",names(a1)),"b"
>>,NULL)),C3="Ra")
>>
>> a2 <- subset(a1, sel=unlist(lc1)) # this works
>> a3 <- subset(a1, sel=unlist(lc2)) # this doesn't
>>
>> Is there a way to dynamically include columns in a dataframe?
>>
>> Regards,
>> santosh
>>
>
>	[[alternative HTML version deleted]]
>
>______________________________________________
>R-help at r-project.org mailing list
>https://stat.ethz.ch/mailman/listinfo/r-help
>PLEASE do read the posting guide
>http://www.R-project.org/posting-guide.html
>and provide commented, minimal, self-contained, reproducible code.




More information about the R-help mailing list