What is the 'idiomatic' way of writing a vectorized switch statement? That is, I would like to write, e.g.,
vswitch( c('a','x','b','a'), a= 1:4, b=11:14, 100 ) => c(1, 100, 13, 4 ) equivalent to ifelse( c('a','x','b','a') == 'a', 1:4, ifelse( c('a','x','b','a') == 'b', 11:14, 100 ) ) A simple way of doing this is (leaving aside the default case): colchoose <- function(frame,selector) mapply(function(a,b)frame[a,b],seq_along(frame[1]),selector)) colchoose( data.frame(a=1:4,b=11:14), c('a','b','b','a')) => c(1,11,11,1) But of course this is not very efficient compared to the way ifelse works. Is there a standard function or idiom for this (am I missing something obvious?), or should I write my own? -s [[alternative HTML version deleted]] ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel