Единственная причина, по которой петля не рекомендуется - это то, что она медленная. R предназначен для работы с векторами одновременно и имеет множество функций для достижения этой цели. Вся семья применяется, а также функции, такие как Vectorize, чтобы помочь. Итак, идиома в том, что если вы используете циклы for, вы не думаете о R, но иногда циклы for действительно просто уместны.
Чтобы сделать это в образе мышления R. Векторизуйте свою функцию, если она еще не векторизована (см. Функцию Векторизация), затем вызовите эту функцию со всем столбцом в качестве аргумента и назначьте ее новому столбцу. *
f<-Vectorize(function(x,...),'x')
data$newcolumn<-f(data[,1])
Семейство apply (apply, sapply, lapply, mapply, tapply) также являются альтернативами. Большинство собственных функций R уже векторизованы, но будьте осторожны при передаче дополнительных аргументов, которые должны интерпретироваться как векторы.