Я не знаю о iTerm, но можно сделать это в Терминале. Инструкции могут быть найдены здесь:
Простой ответ - вы не можете и не должны пытаться. Это нарушает рамки и могло бы нанести серьезный ущерб, если бы было разрешено. Есть несколько вариантов, которые можно рассматривать по-другому.
сначала передайте y как функцию
foo<-function(x,y=min){
m<-1:10
x+y(m)
}
, если простая функция не работает, вы можете переместить m в аргумент со значением по умолчанию.
foo<-function(x,y=min(m),m=1:10){
x+y(m)
}
Поскольку это так. игрушечный пример, я бы предположил, что это было бы слишком тривиально. Если вы настаиваете на нарушении области видимости, вы можете передать его как выражение, которое вычисляется явно.
foo<-function(x,y=expression(min(m))){
m<-1:10
x+eval(y)
}
Затем есть возможность вернуть функцию из другой функции. И это может сработать и для вас, в зависимости от вашей цели.
bar<-function(f)function(x,y=f(m)){
m<-1:10
x+y
}
foo.min<-bar(min)
foo.min(1) #2
foo.max<-bar(max)
foo.max(1) #10
Но теперь мы начинаем переходить к нелепому.
Мое решение заключалось в том, чтобы просто изменить аргумент по умолчанию:
R> formals(foo)$y <- call("max", as.name("m"))
R> foo(1)
[1] 11