В общем, я принимаю стратегию Дирка.Вы должны стремиться к тому, чтобы ваш код представлял собой полностью воспроизводимую запись о том, как вы преобразовали необработанные данные в выходные данные.
Однако, если у вас сложный код, может потребоваться много времени для его повторного запуска.У меня был код, который занимает более 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
- это удобный способ удаления переменной во фрейме данных, который вы не хотите создавать
Однако, в конце концов, я все же запускаю весь код с нулячтобы проверить, что результат воспроизводим.