私はこれを得る:
Error in paste0(width, on, k) : object 'x' not found
なぜこの特定の行で「x」について不平を言うのか、私は完全に混乱しています!
on
は文字で、width
数字k
です。x
存在します(この関数のパラメータです)。その行と前の行は次のようになります。
print(index(x))
stopifnot(length(index(x))>=1)
#str(on);str(k);str(width)
extra=list( paste0(width,on,k) )
しかし、代わりに文句を言うコメントアウトされた行を追加すると、さらに奇妙になります:
Error in str(on) : object 'x' not found
この質問を引き起こしたのは、次の行を追加したコールレベルがいくつか上がったことです。
rm(x)
(rm(list=c("x"))
同じ動作をします。)
そのため、「x が見つかりません」というエラーが発生することを期待していました。しかし、その行ではありません(その関数でさえありません)!
背景: コードが という名前のグローバル変数に依存しているバグを見つけました。この変数x
はパラメーターとして渡される必要があります。問題の変数は実際のコードでは「x」と呼ばれていなかったため、単体テストでは機能しましたが、実際のコードでは失敗しました!! そのため、この種のバグが他にないかどうかを確認するために、各変数を使い終わったら明示的に削除することにしました。
(上記のコード スニペットでは、誰かが「ああ、ダレン、まだ R がどのように機能するかを理解していない...」と言うのに十分でない場合は、問題を再現するための最小限の例を作成しようとします。)