Я хотел бы обновить мой .Rprofile
, чтобы изменить base::quit
.Обычное поведение q
и quit
состоит в том, чтобы попросить вас спросить, хотите ли вы сохранить рабочее пространство.Я хотел бы изменить эти функции, чтобы они по умолчанию не сохраняли мое рабочее пространство, например, 1 , изменяя функции, как показано ниже:
q <- function(save = "no") {
quit(save = save)
}
quit <- function(save = "no") {
quit(save = save)
}
Однако здесь есть проблема.(Я немного новичок в R
, поэтому моё описание может быть не совсем точным.) Функции q
и quit
добавлены в глобальную среду.В результате, если я позвоню ls()
, эти функции будут включены.Добавление следующего кода
environment(q) <- as.environment("package:base")
, кажется, добавляет q
к пространству имен base
.То есть я вижу следующее:
# > q
# function(save = "no", ...)
# {
# quit(save = save), ...)
# }
# <environment: base>
Однако, когда я звоню ls()
, q
и quit
, оба они все еще появляются, и если я звоню rm(list = ls())
, то оба q
иquit
вернуться к своим первоначальным определениям в base
.
Что я должен делать, чтобы избежать такого поведения?Я бы хотел, чтобы q
и quit
были изменены, чтобы они появлялись только тогда, когда я звоню ls(name = "package:base")
.
1 Для этого есть несколько причин.Я часто запускаю R из командной строки для проверки файлов данных в каталогах, где я хотел бы иметь возможность рассчитывать на каждый файл, являющийся файлом данных, и поэтому не хочу, чтобы какие-либо точечные файлы загромождали каталог.Более того, любой анализ или очистка, которую я выполняю в консоли, вряд ли будет воспроизводимой.