Действительно необходимо использовать инструмент синхронизации файлов, как SyncBackSE, SyncToy мс, или даже что-то как , WinMerge добьется цели. Я предпочитаю SyncBack, поскольку он позволяет Вам устанавливать очень явные правила для примерно каждого возможного случая и конфликта, по крайней мере, больше, чем другие два. С любым из них Вы не должны будете продолжать нажимать все всплывающие окна, и можно проверить без сомнения, что место назначения является точно тем же как источником.
Вы можете найти все соответствующие общие функции для класса S3, используя методы (). Итак, в вашем случае:
methods(class=fv)
Это ясно описано в справке к UseMethod
.
Когда функция, вызывающая
UseMethod ("fun")
, применяется к объекту с class attributec ("first", "second")
, система ищет функцию с именемfun.first
и, если она ее находит, применяет ее к объекту. Если такой функции не найдено, пробуется функция с именемfun.second
. Если имя класса не создает подходящую функцию, используется функцияfun.default
, если она существует, или возникает ошибка.
Таким образом, если вы ищете подходящую функцию, вам необходимо проверить все возможности, например .:
fun_seeker <- function(obj,fun) {
funs_to_check <- paste(fun,c(class(obj),"default"),sep=".")
funs_exists <- funs_to_check %in% methods(fun)
if (any(funs_exists)) funs_to_check[funs_exists][1] else stop("No applicable method")
}
fun_seeker(matrix(rnorm(100),10),"plot")
fun_seeker(matrix(rnorm(100),10),"summary")
В данном случае мы имеем дело с классом S3. (Это более старый и простой объектно-ориентированный стиль.) Это означает, что когда вы набираете plot (K)
для объекта с классом «fv» «data.frame»
, R делает следующее:
Он просматривает путь поиска, чтобы найти функцию с именем plot
. Введите search ()
, чтобы узнать, куда смотрит R. Предполагая, что вы не сделали чего-то глупого, например, определения собственной функции построения графика, она должна найти версию в пакете graphics
.
Эта функция имеет особую логику для работы с входом, где x
- это функция, затем вызывает UseMethod
.
UseMethod
просматривает путь поиска функции с именем plot.fv
и вызывает ее, если находит ее .
В противном случае он ищет plot.data.frame
.
В противном случае он ищет plot.default
.
Если бы это не могло быть найдено, была бы выдана ошибка . (Хотя plot.default
существует в графическом пакете, поэтому вам придется очень постараться, чтобы получить здесь ошибку.)