Вы должны по возможности писать привычные функции.Например, если вы пишете функцию f(x)
, убедитесь, что она работает, когда x
- это вектор, а не просто одно число.Не полагайтесь на Vectorize
, чтобы сделать это за вас, потому что это будет медленно для очень больших векторов.
Полезный метод - заменить if ... then ... else
на ifelse
.Например:
isGoodNumber <- function(X)
{
ifelse(X==5, TRUE, FALSE)
}
v<-c(1,2,3,4,5,5,5,5)
v [ isGoodNumber(v) == TRUE ]
В этом конкретном случае вы, конечно, можете упростить вещи:
isGoodNumber <- function(X) return(X==5)
или даже просто
v[v==5]
, но ifelse
техникабудет полезен в более общем смысле.