如何将所有options()参数重置为默认值?

20

正如标题中所述,我正在尝试理解如何将 options() 的所有参数重置为其默认设置。我在网上和 ?options 帮助文件中搜索,但未能找到答案。

我期望答案是 readily available,只是我没有找到。

谢谢。

编辑:虽然我同意How to set R to default options? 是相同的问题,但我未能在其选定的答案中看到我要求的明确/显式的解决方案:如何将 options() 重置为其默认值。该线程中选定的答案清楚地解释了如何保存 options() 设置并稍后加载它们。


1
我同意这个问题与如何将R设置为默认选项?相同。我对那个帖子的问题是,我觉得那里的“已选择”答案与我为我的目的所选择的答案不同(即概述如何将options()重置为R的默认设置,而不是保存和重新加载我的自己的options()设置)。 - Daniel Fletcher
链接问题中的答案提供了必要的信息。如果您打开一个单独的R会话,它将以默认选项设置开始。您可以将这些默认设置保存在文件中,并将该文件加载到其他会话中,以恢复默认值。 - RHertel
正如我在下面另一个评论中指出的那样,我目前没有看到其他线程的答案中提到打开新会话将从默认选项设置开始。(我确实看到它讨论了保存设置,然后稍后恢复它们。)谢谢。 - Daniel Fletcher
3个回答

20

如果您重新启动R会话,它会将选项重置为默认值。 选项保存在列表中,调用options()将显示该列表。

您可以在重新启动R后保存默认选项:

backup_options <- options()

您可以进行任何所需的更改,然后恢复默认选项:

options(backup_options)


1
非常感谢您的回答。我更喜欢一些可以在会话中实现的解决方案;然而,由于我无法找到一个会话内的解决方案,而打开一个新的R会话对我来说是有效的,所以我选择了这个作为答案。注意:我还发现保存我的工作区不会改变这个功能(我认为从保存的工作区打开R可能会导致定制而不是默认选项——它会以默认选项打开)。 - Daniel Fletcher
这不会删除您设置的任何选项,而这些选项不属于 backup_options,对吗? - bers

7

只需运行以下命令:

default_opts <- callr::r(function(){options()}); options(default_opts)

工作原理

它通过启动一个独立的后台进程,在该会话中访问默认选项,并将这些选项提供回当前会话来实现。

示例

# Default option
options("scipen")
# $scipen
# [1] 0

# Set to something else
options(scipen = 999)
# $scipen
# [1] 999

# Reset to defaults:
default_opts <- callr::r(function(){options()}); options(default_opts)

# Option is back to its default value
options("scipen")
# $scipen
# [1] 0

4

我自己没有尝试过,但是settings包似乎提供了在不事先存储默认值的情况下恢复默认值的可能性:

library(settings)
reset(options)

感谢您的反馈。这对我没有起作用。在安装和打开“设置”包后,我首先使用options(warn = 2)测试了reset(options)。当我运行options("warn")时,结果是$warn [1] 2。根据?options的说明,我理解warn的默认值为0。 - Daniel Fletcher
很抱歉它没能成功。正如我所说,我没有测试过它。该软件包的描述似乎适合您的问题。可能需要深入研究软件包手册。或者使用在链接问题中描述的先前答案的解决方案:打开新会话,将默认选项存储在文件中,并在当前会话中加载该文件。 - RHertel
我很好,谢谢。也许你可以编辑另一个帖子上的答案(如何将R设置为默认选项?),因为我从中了解到如何“存储”我的设置,而不是打开新的R会话将options()重置为其默认设置。 - Daniel Fletcher
我认为你可能误解了@PaulHiemstra的答案。诀窍是打开一个新的R会话,它将自动以默认选项启动。该会话的选项(个性化或非个性化)可以存储在文件中,并在另一个会话中稍后读取,以将选项设置为这些值。 - RHertel
我可能误解了Paul的回答。如果他的回答暗示需要打开一个新的R会话,我真的很难看出来,并建议有人编辑它以使其明确或至少更加显著。 :-) - Daniel Fletcher

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接