Существует множество примеров обновления глобальных переменных изнутри функций R с использованием <<-
или assign()
( здесь - всего лишь один пример), но я не могу найти никаких примеров на как использовать такие переменные в качестве входных данных для функций. Например, рассмотрим эту функцию MATLAB, которая представляет собой просто сложный способ добавления пи к числу:
function final = parentFun(why)
global pie
pie = pi;
final = childFun(why);
end
function y = childFun(x)
global pie
y = x + pie;
end
Так что
>> parentFun(100)
ans =
103.1416
Я хотел бы воссоздать это в R . Самое близкое, что я получил, было вложением childFun
в parentFun
, например:
parentFun <- function(why) {
pie <- pi
childFun <- function(x) {
x + pie
}
childFun(why)
}
И действительно
> parentFun(100)
[1] 103.1416
Проблема в том, что в моем реальном случае parentFun
является пара сотен строк и несколько дочерних элементов, которые могут быть столь же длинными. Другими словами, вложение в основном не входит в таблицу .
Кроме того, это функции в пакете, поэтому pie
на самом деле получается из функции и не запускается сценарий.
Конечно, разделение обеих функций не работает, потому что childFun()
не видит pie
:
> parentFun <- function(why) {
pie <- pi
childFun(why)
}
> childFun <- function(x) {
x + pie
}
> parentFun(100)
Error in x + pie : non-numeric argument to binary operator