gpt4 book ai didi

r - 如何创建定期发送文本到 "log file",同时将正常输出打印到控制台?

转载 作者:行者123 更新时间:2023-12-02 20:55:53 24 4
gpt4 key购买 nike

我正在为职业运动的蒙特卡洛模拟创建 R 代码。因为游戏动态非常复杂,为了使调试过程更简单,我想让 R 将游戏中发生的每个 Action 的一行文本发送到“日志文件”。日志文件将是对模拟中发生的情况的全面、逐个游戏的描述,并且看起来像这样......

  • “比赛开始”
  • 控球权分配给 X 队
  • 球员 Y 拿到球
  • 玩家 Y 得分
  • 球员 Z 犯规
  • 换人(球员 W <-> 球员 Q)
  • ...
  • “游戏结束”

我不能只使用sink()函数,因为在模拟运行时,我设置了一个进度条(使用setTxtProgressBar函数)和要打印到控制台的实时分数。如果我使用 sink(),我在 R 控制台上看不到任何进度指示器或分数。这有道理吗?换句话说,我需要定期以累积方式将文本发送到日志文件。这里有一些示例代码,可以为您提供一些可以使用的东西......

谢谢

for (i in 1:100)
{**SOMEHOW NEED TO PRINT LINE "START LOOP" TO LOG FILE**;
a <- rnorm(n = 100, mean = i, sd = 5);
print(mean(a)); #PRINT THIS MEAN TO THE CONSOLE
**SOMEHOW PRINT "LOOP 'i' COMPLETE" TO LOG FILE**}

最佳答案

参见?cat。您可以打开与日志文件的文件连接,并在 cat 调用中指定该连接。当您未指定文件名或连接时,它将打印到控制台。

正如您所说,不要使用 sink() 因为它会使日志文件成为默认连接。相反,使用 file() 打开命名连接。

> log_con <- file("test.log")
> cat("write to log", file = log_con) # creates file and writes to it
> cat("write to console") # prints to console
write to console

上面的结果是在一个日志文件中,在控制台上打印了“write to log”和“write to console”行。

如果您需要附加到日志文件,请设置 append = TRUE 并使用文件名而不是 file() 连接。

> cat("add to log", file = "test.log", append = TRUE)

关于r - 如何创建定期发送文本到 "log file",同时将正常输出打印到控制台?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22843775/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com