[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