ну дело-то не в векторизации, это достаточно сложная механика, как ни крути
у самых слабых проблемы вызывают задачки вида В векторе "vec" замените три случайных значения на NA
таблички дело сильно дальнее, там свои проблемы будут, конечно же. и тоже алгоритмические в первую очередь.
например, вместо %in% студенты любят рисовать лапшу через | или вообще был как-то случай с миллионом вложенных ifelse. или вместо того, чтобы вычислить в группе статистики по трем колонкам, они делают три таблички (по одной колонке) и потом их мерджат.
а сильные просят задачки посложнее, так как эти решают влет. и все это в одной группе.
Ну вот как раз про индексацию результатом вызова функции. Если на этом этапе проблемы, то тут только одно: опыт (нарешенность, как тут писали уже).
Из абстрактных советов: развивайте любовь к математике в целом, по жизни помогает. Говорю как любитель)). Говорите, что нет границ и жёстких рамок, пока вы действуете согласно заданной логике. Мне помогало в своё время и даже конструкции вроде names(x) <- c("a", "b") не вызывали вопросов. Это потом я уже ужаснулся тому, что мы результату вызова функции что-то там присваиваем.