按Ctrl + D时调用R函数

 云在天涯无无边_737 发布于 2023-02-11 10:11

按Ctrl + D退出R repl时调用了什么函数(如果有的话)?我在几个问题中看到过,例如:

如何禁用"保存工作区图像?" 在R中提示?

专家R用户,你的.Rprofile中有什么?

代码让我相信它正在调用函数qquit.

我想覆盖的原因是让烦恼:

保存工作区图像?[Y/N/C]:

退出时提示消失.但是,重写功能.Rprofile如:

quit <- function(...) {
  print(1)
}

并且类似地q没有工作 - 即按Ctrl-D实际上没有打印数字1,直接进入提示.

上述链接中提供的解决方案似乎不起作用.R版使用:

R version 2.15.2 (2012-10-26) -- "Trick or Treat"
Copyright (C) 2012 The R Foundation for Statistical Computing
ISBN 3-900051-07-0
Platform: x86_64-pc-linux-gnu (64-bit)

Scott Ritchi.. 5

Ctrl-D 不调用任何函数,它是特殊的键盘中断.

尝试按Ctrl-D,然后回答c取消.如果你按向上箭头来获取最后一个命令,你会发现它不在那里.

要覆盖讨厌的问题Save workspace image? [y/n/c]:,请参阅此问题的答案:

总结一下,你有三个选择:

打电话R --no-save代替R,

在交互式R会话中加载以下内容(不起作用.Rprofile):

require(Defaults)
setDefaults(q, save="no")
useDefaults(q)

或者将以下内容放入您的.Rprofile:

# Set hook to be run when Defaults is attached
setHook(packageEvent("Defaults", "attach"),
  function(...) { setDefaults(q, save="no"); useDefaults(q) })
# add Defaults to the default packages loaded on startup
old <- getOption("defaultPackages");
options(defaultPackages = c(old, "Defaults"))

编辑:

这是我能想到的另一个黑客,因为上面的内容对你的情况没有用.这不是一个R解决方案,但可能会做到这一点?

首先,将您的R可执行文件(为了本示例的目的,我假设它已经存在/usr/bin/)移动到一个新文件,例如:

sudo mv /usr/bin/R /usr/bin/Rold

现在设置一个新的bash脚本/usr/bin/R:

#!/bin/bash

/usr/bin/Rold --no-save "$@"

并且chmod它有正确的权限.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有