r機能でサブセットを使用している場合、既に評価中のエラーの約束
質問
次の関数を実行すると、奇妙なエラーが発生します。
TypeIDs=c(18283,18284,17119,17121,17123,17125,17127,17129,17131,17133,18367,18369,18371,18373,18375,18377,18379)
featsave<-function(featfile,TypeIDs=TypeIDs) {
mydata1<-read.table(featfile,header=TRUE)
mydata2<-subset(mydata1,TypeID %in% TypeIDs)
mydata<-as.data.frame(cast(mydata2, Feat1 + Feat2 + ID ~ TypeID,value="value"))
save(mydata,file="mydatafile.Rdata",compress=TRUE)
return(mydata)
}
次のデータを使用して:
Feat1 Feat2 ID Feat3 Feat4 TypeID value
1 1 1 6 266 18283 280.00
1 1 1 6 266 18284 20.00
1 1 1 6 266 18285 0.00
1 1 1 6 266 17116 0.00
1 1 1 6 266 17117 0.00
1 1 1 6 266 17118 0.00
1 1 1 6 266 17119 68.75
1 1 1 6 266 17120 0.00
1 1 1 6 266 17121 1.26
私が得るエラーは次のとおりです。
Error in inherits(x, "factor") :
promise already under evaluation: recursive default argument reference or earlier problems?
このエラーは、で発生します mydata2
データのサブセットを取得する行。インタープリターで関数の各行を実行した場合、エラーが発生しないため、デバッグできないようです。何が与えるのですか?
解決
それはあなたの再帰的な使用です TypeIDs
. 。覚えておくべきことは、関数の引数がゆっくりと評価されているということです。 function(foo, bar = foo)
. 。残念ながら、この場合、TypeIDのデフォルトをそれ自体に設定すると、評価に再帰が発生します。パラメーターまたは外側のオブジェクトのいずれかの名前を変更してみてください。
所属していません StackOverflow