Похоже, у вас есть вопросы:
1) Возврат значения в случае сбоя.Как уже было сказано, посмотрите на failwith в пакете plyr.Это делает именно это.
2) Ускоряет цикл for.Вы пробовали использовать mapply ?Это многомерное приложение, которое применяет функцию к каждому элементу каждого аргумента одновременно.Так что
mapply(myfunc, column1, column2, column3, column4)
(наряду с изменением myfunc для использования failwith) будет делать то, что вы ищете.
plyr-версия mapply - mdply, если вы предпочитаете.