Отменить команду в R - PullRequest
       9

Отменить команду в R

10 голосов
/ 19 июня 2010

Я не могу найти что-либо, связанное с эффектом отмены команды в R (ни в разделе Введение в R, ни в R в двух словах) Меня особенно интересует удаление / удаление при работе с интерактивными графиками.

Какие подходы вы предлагаете?

Ответы [ 2 ]

26 голосов
/ 19 июня 2010

Вы должны рассмотреть другой подход, который приводит к воспроизводимым работам:

  • Выберите редактор, который вам нравится и который имеет R поддержку
  • Напишите ваш код в «фрагментах», то есть в коротких файлах для функций, а затем используйте возможности редактора / R для отправки кода в интерпретатор R
  • Если вы допустили ошибку, повторно отредактируйте ваш фрагмент и запустите его снова
  • У вас всегда будет журнал того, что вы сделали

Все это работает чрезвычайно хорошо в ESS , поэтому многим опытным R пользователям нравится эта среда. Но редакторы - это субъективный и личный выбор; другим людям нравится Eclipse с StatET лучше. Существуют и другие решения для Mac OS X и Windows, и все это уже много раз обсуждалось здесь, в SO и в других местах, таких как списки R.

13 голосов
/ 20 июня 2010

В общем, я принимаю стратегию Дирка.Вы должны стремиться к тому, чтобы ваш код представлял собой полностью воспроизводимую запись о том, как вы преобразовали необработанные данные в выходные данные.

Однако, если у вас сложный код, может потребоваться много времени для его повторного запуска.У меня был код, который занимает более 30 минут для обработки данных (то есть, импорт, преобразование, объединение и т. Д.).В этих случаях одна строка кода, уничтожающая данные, потребовала бы от меня 30 минут, чтобы восстановить мое рабочее пространство.Под кодом, уничтожающим данные, я подразумеваю такие вещи как:

  • x <- merge(x, y)
  • df$x <- df$x^2

например, объединяет, заменяя существующую переменную преобразованиемудаление строк или столбцов и т. д.В этих случаях легко, особенно когда впервые изучаешь R., чтобы совершить ошибку.

Чтобы не ждать этих 30 минут, я использую несколько стратегий:

  • Если ясобираясь сделать что-то, где есть риск уничтожения моих активных объектов, я сначала скопирую результат во временный объект.Затем я проверю, работает ли он с временным объектом, и перезапущу его замену соответствующим объектом.Например, сначала запустите temp <- merge(x, y);, убедитесь, что он работал str(temp); head(temp); tail(temp), и если все выглядит хорошо x <- merge(x, y)
  • Как обычно в психологическом исследовании, у меня часто бывают большие кадры данных с сотнями переменных и различными подмножествами случаев.,Для данного анализа (например, таблицы, рисунка, некоторого текста результатов) я часто извлекаю только подмножество нужных мне дел и переменных в отдельный объект для анализа и работаю с этим объектом при подготовке и завершении моей работы.анализ кода.Таким образом, у меня меньше шансов случайно повредить мой основной фрейм данных.Это предполагает, что результаты анализа не нужно возвращать в основной фрейм данных.
  • Если я завершил выполнение большого количества сложных преобразований данных, я могу сохранить копию основных объектов рабочей области.,Например, save(x, y, z , file = 'backup.Rdata') Таким образом, если я совершу ошибку, мне нужно только перезагрузить эти объекты.
  • df$x <- NULL - это удобный способ удаления переменной во фрейме данных, который вы не хотите создавать

Однако, в конце концов, я все же запускаю весь код с нулячтобы проверить, что результат воспроизводим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...