You need to (re-)read ?ifelse. In ifelse(L, v1, v2), L is suppose to be a vector of logicals (or an expression that evaluates to one), and v1 and v2 are vectors of same length as L; i.e., ifelse() vectorizes if ... else .... In the first case: r = ifelse(length(c())!=0, c(), c(1,2)) length(c()) != 0 is FALSE, so you just get 1 as the answer. In the second case, r = ifelse(length(c())==0, c(), c(1,2)) length(c()) == 0 is TRUE, so ifelse tries to return the first element of c(), which does not exist. I suspect you really want if ... else .... Andy
From: Svetlana Eden Today is a good day for asking question, I guess.
c()
NULL
length(c())==0
[1] TRUE
r = ifelse(length(c())!=0, c(), c(1,2)) ### OK r = c() ### OK r = ifelse(length(c())==0, c(), c(1,2)) ### why this is
not OK (given
the previous two)?
Error in "[<-"(`*tmp*`, test, value = rep(yes, length =
length(ans))[test]) :
incompatible types
c() == NULL
logical(0)
r = ifelse(c()==NULL, c(), c(1,2)) ### why this line does not r ### result in error -
logical(0) ### 'c()==NULL' is not TRUE and not FALSE ?
--
Svetlana Eden Biostatistician II School of Medicine
Department of Biostatistics Vanderbilt
University
______________________________________________ R-help at stat.math.ethz.ch mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
------------------------------------------------------------------------------
Notice: This e-mail message, together with any attachments,...{{dropped}}