R / Rstudio:是否有监视功能可以持续监视某些值?

R / Rstudio : is there a watch function to continuously monitor some values?

我在相当大的数据帧上有很多不同的操作 运行。维护开始变得很痛苦,尤其是一些数据格式不正确的情况下,我正在寻找一些让我的生活更轻松的选择。

问题在于,在操作流程的某个时刻,NA 被引入多行,包括 id(当然是由于一些错误的子集)。现在我无法轻易找到罪魁祸首,因为我每次都在 Rstudio 中对它进行 str() 或 view() 它...这需要时间而且我已经做过一次但没有发现错误的操作...

所以我很好奇是否有一些程序包可以解决这个问题,或者有什么程序可以编程"daemon-like",以便在出现特定值时弹出警告消息。

while 循环没有帮助,因为它会评估所有语句,当然在某一时刻条件不为真并且在停止时不会打印...

while(nrow(df[is.na(df$id),]) > 0){
statements OK
breaking statement
other OK statements
}

我会寻找其他选择,但我之前想问...

编辑:感谢有用的评论,我一定会更多地研究这些功能。但是我也尝试为自己建立一个监视功能(见我的回答)。

好的,我想我终于构建了一个非常像它的东西:

这是一个函数,用于在满足给定条件之前每行获取一个文件行:

watchIt <- function(file,watchexpression,startwatchline){
  line <- 1
  sourceList <- scan(file = "source_test.R", what="character", sep="\n", blank.lines.skip = FALSE)
  maxLines <- length(sourceList)
  while(startwatchline > line && maxLines >= line){
    cat("l")
    eval(parse(text=sourceList[line]))
    line <- line+1
    cat(line)
    cat(" ")
  }
  while(eval(parse(text=watchexpression)) == FALSE && maxLines >= line){
    cat(" L")
    eval(parse(text=sourceList[line]))
    line <- line+1
    cat(line)
    cat(" ")
  }
  if(maxLines <= line) {
    cat("End of file reached without condition getting TRUE")
  }
  else{
  cat("Condition evaluated to TRUE on line :")
  cat(line)
  cat("\n")
  cat(sourceList[line])
  }
}

我就是这样使用它的:

watchIt("source_test.R","nrow(df[is.na(df$id),]) > 0",10)

这将 "source_test.R" 放入列表中,每行一个新列表项,并且从第 10 行开始,我测试生成的数据帧是否在 id 字段中为 NA。当条件评估为 TRUE 或到达列表项的末尾时,执行将停止。

我还在等待一些 other/better 的答案...此外,这是我在 R 中设法创建的第四个函数,所以我想可能需要对其进行改进。 ..