函数与指定的i一行一行地运行,但不能与函数调用一起使用

时间:2011-12-06 21:56:16

标签: r function sapply

FUNC <- function(i){
var <- i
dist <- sapply(1:(i-1),function(x){list[[x]]*co[var,x]})
mean <- sapply(1:(i-1),FUN2)
block <- t(co[i,i]*list[[i]])+rowSums(mean)
new_list[[i]] <- t(block)
}

当我指定i = 4或i = 10,并逐行运行函数定义中的代码时,它完全有效,并为new_list[[i]]分配t(block)的值。 但是,当我做的时候

FUNC(4) or FUNC(10)

返回错误消息

Error in dist[[x]] : subscript out of bounds

有没有人知道为什么它不能用于函数调用? 谢谢!!

1 个答案:

答案 0 :(得分:3)

我怀疑您的FUN2函数使用dist。但是您在dist内计算的FUNC是本地的,因此FUN2无法找到它。相反,它使用全局工作空间中的那个,这可能太短了。这就是你收到错误信息的原因。

您应该真正更改FUNCFUN2,以便他们不使用任何全局变量(codistlist,{{1 } { - 可能new_list也可能是FUN2}的参数。

...但至少更改FUNCFUN2作为参数:

dist

...如果这段代码是您想要保留的,那么您应该真的考虑为这些函数提供更具描述性的名称......