0
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

有谁知道为什么它不适用于函数调用?谢谢!!

4

1 回答 1

3

我怀疑你的FUN2功能使用dist. 但是dist你计算的里面FUNC是本地的,所以FUN2找不到。相反,它使用全局工作区中的那个,这可能太短了。这就是您收到该错误消息的原因。

您应该真正更改两者FUNCFUN2因此它们不使用任何全局变量(co, dist, list, new_list-FUN2也可能是 的参数FUNC)。

...但至少改变FUN2dist一个论点:

FUN2 <- function(i, dist) {
  # Your code here...
}

# In FUNC: Pass dist to FUN2
mean <- sapply(1:(i-1),FUN2, dist=dist)

...如果您想保留此代码,您应该真正考虑为函数提供更具描述性的名称...

于 2011-12-06T22:18:14.457 回答