【问题标题】:Find history with a pattern in R在 R 中查找具有模式的历史
【发布时间】:2014-01-11 15:05:33
【问题描述】:

在 Linux bash 中,我可以使用类似的东西

history | egrep "df"

它会列出我的历史记录中包含“df”模式的所有实例。

我正在尝试为 R 软件找到类似的语法。我在这里找到了类似的东西 (history search backward in R),但是,第一个答案中的建议似乎不起作用。

基于该答案,我在 R 中尝试了以下操作:

> history(pattern="df\\(")
> history(pattern="df(")
> history(pattern="df")

但是没有将模式“df”的历史命令输出到控制台(或输出到我能看到的任何其他地方)。

谢谢...

【问题讨论】:

  • 只是一个快速提示。您关心历史让我怀疑您的工作流程不是最佳的。建议在脚本中编写所有命令(最好使用 IDE,但 Rgui 也允许您这样做)并将它们从那里发送到 R。
  • history(pattern="df") 在 Linux 上对我来说工作得很好(?history 说历史机制在 Unix 和 Windows 上的工作方式不同..)
  • 我最近偶然发现的一件事:如果您使用的是 mac 并在 Rstudio 的控制台中按command + up,它将在滚动窗口中显示您最近的历史记录。不过,这里可能没用。
  • Rstudio 有一个历史窗格,里面有自己的搜索窗口。

标签: r history


【解决方案1】:

这个替代版本适合我:

grep("df", readLines(".Rhistory"), value=T)

history 版本也不适合我。文档提到历史函数在某种程度上依赖于实现。例如,在 Rstudio 中,history() 不返回任何内容。

此外,您可能需要在 grep 之前运行 savehistory(),因为您的控制台可能会在将历史记录实际写入文件之前将其缓冲一段时间。

【讨论】:

  • 为什么grep('?', readLines('.Rhistory'), value = TRUE) 行为怪异?
  • 注意?是正则表达式中具有特殊意义的字符。如果要匹配文字 ?,则需要使用 "\\?"作为正则表达式。
  • 或者添加fixed=TRUE作为参数
猜你喜欢
  • 2023-04-01
  • 1970-01-01
  • 2016-09-10
  • 2013-01-27
  • 2015-10-18
  • 2022-11-10
  • 2018-11-24
  • 2017-11-09
  • 2016-08-25
相关资源
最近更新 更多