Это анонимная функция. Если мы развернем код
bench_nor2 <- function(x,repeats) { system.time(rep(
# without explicit return
(function(x)
vector(length=x,mode="numeric")
)(x),
repeats)) }
, мы увидим, что в вызове rep( ... )
первый аргумент -
(function(x)vector(length=x,mode="numeric"))(x)
Теперь, это любопытный способ выразить это. Но получается, что function(x) vector(...)
определяет однострочную функцию (которая вызывает vector
для создания вектора чисел c длины x
). Обернутая в скобки (function(x) ...)
возвращает функцию, а затем (function(x) ...)(x)
вызывает анонимную функцию с аргументом x
.
Вы получите тот же результат от:
my_vector <- function(y) vector(length=y, mode="numeric")
bench_nor2 <- function(x, repeats) {system.time(rep(my_vector(x), repeats))}