Обрабатывать переменные с помощью вложенной функции в r - PullRequest
0 голосов
/ 02 июля 2019
f1 <- function(x){
pass[4]+x
}
f2 <- function(x,y){
pass=y
f1(x)
}
f2(x=3,y=c(1,2,3,4,5))

Переменная pass не может быть передана в функцию f1;Может ли кто-нибудь помочь мне объяснить, почему?А как мне поступить с чехлом?

Ответы [ 2 ]

0 голосов
/ 02 июля 2019

проверка объектов среды в области действия функции

f1 <- function(x){
    print('f1: ')
    print(ls(envir = environment()) )
    # pass[4]+x
}
f2 <- function(x,y){
  pass=y
  print('f2: ')
  print(ls(envir = environment()) )
  f1(x)
}
f2(x=3,y=c(1,2,3,4,5))

попробуй:

f2 <- function(x,y){
  f1 <- function(x){
    pass[4]+x
  }
  pass=y
  f1(x)
}
0 голосов
/ 02 июля 2019

pass объявлено в пределах f2, поэтому оно доступно только в пределах f1.если вы хотите сослаться на него в f1, вы должны передать его f1 в качестве аргумента.

f1 <- function(x, pass) {
    pass[4]+x
}
f2 <- function(x,y) {
    pass=y
    f1(x, pass)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...