Изменить базовую функцию в R - PullRequest
0 голосов
/ 14 марта 2019

Это мой вопрос:

Как я могу изменить базовую функцию "dir" только для установки параметра "pattern" по умолчанию?.

ПРИМЕЧАНИЕ.Я должен использовать базовую функцию dir, а не другую.

Причина, по которой мне это нужно, заключается в следующем (на случай, если кто-то предложит другое решение):

Мне нужно загрузить пакет GGIR

library(GGIR)

Когда он загружен, загружаются также несколько функций.Я использую многие из этих функций (например, «g.part2»), но я получаю эту ошибку:

Error in load(paste0(path, fnames[i])) : 
  bad restore file magic number (file may be corrupted) -- no data loaded
In addition: Warning message:
file ‘desktop.ini’ has magic number '[.She'
  Use of save versions prior to 2 is deprecated

Я отладил пакет и функцию, и я уже знаю, что происходит:

Когда выполняется «g.part2», создается каталог, и некоторые файлы сохраняются в нем.Но когда каталог создается, моя Windows также создает в нем скрытый файл с именем «desktop.ini» (я исследовал это несколько дней, но не нашел способа избежать создания desktop.ini).

Затем имена файлов, которые были сохранены в каталоге, восстанавливаются (включая desktop.ini) с помощью функции «dir».Эти файлы читаются, и происходит сбой при попытке прочитать desktop.ini.

Чтобы решить эту проблему, мой первый подход состоял в том, чтобы создать функцию "dir1" для исключения desktop.ini, просто изменив значение по умолчанию.значение в параметре "pattern" из базовой функции dir.Затем мне пришлось изменить «g.part2»

trace(g.part2,edit=TRUE)

… и заменить «dir (» на «dir1 («

). Однако, как и в «g.part2», есть несколько функцийчто мне нужно использовать ("g.part3", "g.part4", "g.part5", "g.report.part4" ....), и они внутренне используют функцию "dir". Для меня это не жизнеспособнобыть «отслеживающим» многие функции каждый день, кроме того, это не может быть сделано программно, не так ли?

Итак, я думаю, решение (если это возможно) состоит в том, чтобы изменить базовую функцию dir иустановить значение по умолчанию для параметра шаблона только для исключения файла desktop.ini. При этом мне не нужно изменять какие-либо функции из пакета GGIR.

С наилучшими пожеланиями

1 Ответ

0 голосов
/ 16 марта 2019

Я мог бы изменить базовую функцию dir, используя:

trace(base::dir,edit=TRUE)

Однако, чтобы исправить мою проблему, я не изменял эту базовую функцию, вместо этого я следую инструкциям в комментарии Грегора:

Re: раскройте репо, перейдите на страницу github, нажмите кнопку форка в правом верхнем углу и загрузите собственную копию кода пакета.Вы бы открыли его (в RStudio), отредактировали нужные файлы, а затем собрали и установили измененную версию пакета.(Все это можно сделать в RStudio, если вы установите вспомогательные пакеты, devtools, roxygen2, testthat и т. Д.) Это, безусловно, будет опыт обучения, но если необходимые изменения на самом деле незначительны, это не будет слишком плохо

Теперь мне не нужно ничего менять вручную.Я просто загружаю свою библиотеку GGIR

load(GGIR)

… (изменено мной) и все работает отлично!.

Большое спасибо.

С уважением

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