我在 R 中编写了一个函数来将任何消息打印到日志文件和控制台。但是如果在运行代码时出现任何意外错误,那么错误只会显示到控制台。有没有办法将错误消息同时写入控制台和日志文件?这里是功能..
log_con <- file("Text1.txt", open="a")
loggerfn<-function(Message,LogConnection=log_con){
cat(Message, file = LogConnection)
cat(Message)
}
Run Code Online (Sandbox Code Playgroud)
这是示例代码,用于...
for (i in 1:10)
{
loggerfn("loop begins\n",log_con)
a <- rnorm(n = 100, mean = i, sd = 5)
loggerfn(mean(a),log_con)
loggerfn("loop Completed\n",log_con)
if(i==8){
sdfs
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,我通过提供未定义的对象 sdfd 故意引入了错误。下面提供的错误消息仅显示在控制台中,有没有办法将错误消息同时写入控制台和日志文件?
Error: object 'sdfs' not found
Run Code Online (Sandbox Code Playgroud) 我需要在我的代码中使用任何apply函数而不是for循环.提到的是示例代码和函数.
这是我的数据
testdata<-data.table(x1=sample(1000),y1=sample(1000),x2=sample(1000),y2=sample(1000),h=sample(1000))
Run Code Online (Sandbox Code Playgroud)
这是我的功能
testfunction<-function(x0,y0,x1,y1,x2,y2,h){
x<-x0+x1+x2+y0+y1+y2
y<-x+x0+y0
d<-x+y
R<-x+y+d
result <- data.frame(d,R,x,y)
return (result)
}
Run Code Online (Sandbox Code Playgroud)
我用for循环的当前代码是
resultdf<-data.frame(d=NA,R=NA,x=NA,y=NA)
for (i in 1:nrow(reqdata.LN)){
resultdf[i,]<-testfunction(x0=1.2,y0=2.1,testdata$x1[i],testdata$x2[i],
testdata$y1[i],testdata$y2[i],testdata$h[i])
}
Run Code Online (Sandbox Code Playgroud)
我尝试过使用lapply和sapply,但是几乎没有错误
bb<-lapply(1:nrow(testdata),testfunction,x0=1.2,y0=2.1,testdata$x1[i],testdata$x2[i],
testdata$y1[i],testdata$y2[i],testdata$h[i])
Run Code Online (Sandbox Code Playgroud)
有些人可以告诉我们如何使用这个应用函数.