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 を指定して、関数定義内のコードを 1 行ずつ実行すると、完全に機能し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見つけることができません。代わりに、おそらく短すぎるグローバル ワークスペース内のものを使用します。そのため、そのエラー メッセージが表示されます。

あなたは本当に両方FUNCを変更する必要がありFUN2、グローバル変数を使用しないようにする必要があります ( co, dist, list, new_list- そしておそらくFUN2あまりにも への引数になる可能性がありますFUNC)。

...しかし、少なくとも引数としてFUN2取るように変更します:dist

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 に答える