在R中使用嵌套函数处理变量

时间:2019-07-02 00:41:20

标签: r function

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 :(得分:0)

passf2范围内声明,因此仅在f1范围内可用。如果要在f1中引用它,则必须将它作为参数传递给f1

f1 <- function(x, pass) {
    pass[4]+x
}
f2 <- function(x,y) {
    pass=y
    f1(x, pass)
}

答案 1 :(得分:0)

检查功能范围内的环境对象

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)
}