【发布时间】:2013-03-21 15:58:32
【问题描述】:
我有两个功能,一个内另一个
fun.a <- function (y,smth) {
z <- y*3
sapply(smth,FUN = fun.b)
}
fun.b <- function(x) {
return(x+z)
}
如果我跑:
fun.a(2, c(1, 2, 3))
我收到一条错误消息,因为“较低级别”函数 fun.b 中不存在 z。但是在fun.a 中使用sapply 时,我无法传递值z!
也许它存在一个允许在函数内部创建一个也存在于外部的对象的函数?如何解决这个问题?
编辑:我不想在fun.a 中复制粘贴fun.b,也不想用for-loop 替换sapply。在这种情况下,解决方案仍然存在吗?
【问题讨论】:
-
z在fun.a的范围内。您必须使用两个参数x and y定义fun.b。或者在fun.a中声明fun.b。 -
@阿伦。声明 fun.b 在 fun.a 中?我该怎么做?
-
@Arun Aahh 你的意思是在函数 fun.a 中创建函数 fun.b。如果我这样做会起作用吗?因为我不能将两个元素从 fun.a 传递给 fun.b 因为我想使用 sapply 函数
-
我的意思是剪切
fun.b并粘贴到z <- y * 3之后。 -
@Arun 是的,它通过在 fun.a 中创建 fun.b 来工作。但我不得不说,出于实际原因,这对我来说不是一个很好的解决方案。有没有办法告诉我们在函数中创建的对象直接存在于该函数之外或我们从该当前函数调用的任何函数中(不确定我是否清楚!!)?