Доступ к элементу функции из другой функции, когда нельзя использовать глобальные переменные (<< -) - PullRequest
1 голос
/ 04 мая 2020
b <- function() {
    x = 10
}

c <- function() {
    d = b()
    print(x)
}

Как получить доступ к элементу "x", если мне не разрешено использовать глобальные переменные (<< -) </p>

Ответы [ 2 ]

4 голосов
/ 04 мая 2020

Ваша функция b возвращает значение 10. Ваша функция c выполняет d = b(), поэтому она присваивает возвращаемое значение b новому объекту с именем d. Это хорошо! Вы не хотите, чтобы ваша c функция знала, что имя x использовалось внутри определения b - вы только что дали новое имя d!

Change print(x) на print(d) и все готово.

В качестве примечания не используйте c в качестве имени для пользовательской функции. Уже есть функция с именем c, и это одна из самых распространенных функций. Создание собственного c() вызовет проблемы.

0 голосов
/ 04 мая 2020

Если ваш пример не отражает того, что вы хотите, возможно, вы захотите вернуть существующее значение того, что b действительно вычисляет, вместе со значением x. Вы можете вернуть список, который может содержать как исходное возвращаемое значение, так и значение x

b <- function() {
x=10
...
list(x=x, previous=whatever_it_previously_returned)
}

Или вы также можете посмотреть на замыкания, но вам нужно дать более точное объяснение что вы пытаетесь достичь, и где вы хотите иметь доступ к x.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...