vapply() funciona como sapply(), só que você tem que especificar o retorno da função corretamente através do parâmetro FUN.VALUE. Caso contrário, um erro irá aparecer, diferente do lapply e sapply que vai retornar em forma de lista. Ou seja, enquanto a sapply() tenta simplificar e, se não conseguir, retorna uma lista, a v apply tambpem tenta simplificar, mas se não conseguir, retorna um erro. A vantagem disso, é ter que pensar no retorno antes.