小编PPC*_*PPC的帖子

R 中的错​​误处理和日志记录

我在 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)

error-logging r

3
推荐指数
1
解决办法
4496
查看次数

R:如何在下面的代码中使用apply函数而不是循环

我需要在我的代码中使用任何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)

有些人可以告诉我们如何使用这个应用函数.

r apply

1
推荐指数
1
解决办法
91
查看次数

标签 统计

r ×2

apply ×1

error-logging ×1