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
有没有人知道为什么它不能用于函数调用? 谢谢!!
答案 0 :(得分:3)
我怀疑您的FUN2
函数使用dist
。但是您在dist
内计算的FUNC
是本地的,因此FUN2
无法找到它。相反,它使用全局工作空间中的那个,这可能太短了。这就是你收到错误信息的原因。
您应该真正更改FUNC
和FUN2
,以便他们不使用任何全局变量(co
,dist
,list
,{{1 } { - 可能new_list
也可能是FUN2
}的参数。
...但至少更改FUNC
以FUN2
作为参数:
dist
...如果这段代码是您想要保留的,那么您应该真的考虑为这些函数提供更具描述性的名称......