[R] A question on function return
Rui Barradas
ruipbarradas at sapo.pt
Fri Mar 22 19:53:56 CET 2013
Hello,
You get only one value because ifelse is vectorized, and the condition
has length(x > 0) == 1. (You get as many values as there are in the
condition.) Try instead
fn2 <- function(x, y) {
Vec1 <- letters[1:6]
Vec2 <- 1:5
list(if(x > 0) Vec1 else NA, if(y > 0) Vec2 else NA)
}
fn2(-3, -3)
fn2(3, -3)
Hope this helps,
Rui Barradas
Em 22-03-2013 18:43, Christofer Bogaso escreveu:
> Hello again,
>
> Let say I have following user defined function:
>
> fn <- function(x, y) {
> Vec1 <- letters[1:6]
> Vec2 <- 1:5
> return(list(ifelse(x > 0, Vec1, NA), ifelse(y > 0, Vec2, NA)))
> }
>
> Now I have following calculation:
>
>> fn(-3, -3)
> [[1]]
> [1] NA
>
> [[2]]
> [1] NA
>
>> fn(3, -3)
> [[1]]
> [1] "a"
>
> [[2]]
> [1] NA
>
>
> Here I can not understand why in the second case, I get only the first
> element "a" of the corresponding vector 'Vec1'? I want to get complete
> vector(s) as the function return.
>
> Can somebody help me how to achieve that?
>
> Thanks and regards,
>
> ______________________________________________
> 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