我创建了一个R函数,它使用db.collection.aggregate(
[
{$unwind : "$sections"},
{
"$match": {
"_id": ObjectId("571c5c87faf473f40fd0317c")
}
},
{
"$group" : {
"_id" : "$_id",
"maxSectionId" : {"$max" : "$sections.Id"}
}
}
]);
构造来跳过错误。该函数作为独立函数执行时有效,但在$unwind
文件
代码如下
tryCatch
在Rmarkdown
内执行代码时出现以下错误。错误是
select _(。data,.dots = lazyeval :: lazy_dots(...),:找不到对象l:Anonymos等错误。
我认为代码正在尝试评估即使在for(x in 1:length(aa)){
bowlers <- unique(aa[[x]]$bowler)
for (y in 1:length(bowlers)){
#cat("x=",x,"team",theTeams[x],"\n")
tryCatch(l <- getBowlerWicketDetails(team=theTeams[x],name=bowlers[y],dir="."),
error = function(e) {
print("Error!")
}
)
l <- select(l,bowler,wickets,economyRate)
o <-rbind(o,l)
}
}
函数中存在错误时'l'将不可用。怎么解决这个问题?
答案 0 :(得分:0)
最后通过添加额外检查exists()来解决问题。正如我所提到的,在Rmd中执行时,直接执行该函数似乎有效,但该变量不存在
修改后的代码如下
for(x in 1:length(aa)){
bowlers <- unique(aa[[x]]$bowler)
for (y in 1:length(bowlers)){
#cat("x=",x,"team",theTeams[x],"\n")
tryCatch(l <- getBowlerWicketDetails(team=theTeams[x],name=bowlers[y],dir="."),
error = function(e) {
#print("Error!")
}
)
if(exists("l")){
m <- select(l,bowler,wickets,economyRate)
o <-rbind(o,m)
}
}
}
这最终都适用于两者。
全部谢谢!