运行 Rmd 文件时出错,但直接执行函数时 none
Error while running Rmd file but none when executing function directly
我创建了一个 R 函数,它使用 tryCatch
构造来跳过错误。该函数在作为独立执行时有效,但在 Rmarkdown
文件
中执行时出错
代码如下
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)
}
}
在 Rmd
中执行代码时出现以下错误。错误是
Error in select_(.data,.dots=lazyeval::lazy_dots(...),:object l not found calls:Anonymos etc.
我认为即使在 'l' 不可用时 getBowlerWicketDetails()
函数中出现错误,代码也会尝试求值。如何解决?
终于通过添加额外的检查 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)
}
}
}
这最终对双方都奏效了。
谢谢大家!
我创建了一个 R 函数,它使用 tryCatch
构造来跳过错误。该函数在作为独立执行时有效,但在 Rmarkdown
文件
代码如下
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)
}
}
在 Rmd
中执行代码时出现以下错误。错误是
Error in select_(.data,.dots=lazyeval::lazy_dots(...),:object l not found calls:Anonymos etc.
我认为即使在 'l' 不可用时 getBowlerWicketDetails()
函数中出现错误,代码也会尝试求值。如何解决?
终于通过添加额外的检查 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)
}
}
}
这最终对双方都奏效了。
谢谢大家!