Другая проблема, при наличии NAMESPACE, заключается в том, что вы пытаетесь запустить неэкспортированную функцию из пакета foo.
Например (придуманному, я знаю, но):
> mod <- prcomp(USArrests, scale = TRUE)
> plot.prcomp(mod)
Error: could not find function "plot.prcomp"
Во-первых, вы не должны называть методы S3 непосредственно, но позволяет предположить plot.prcomp
было на самом деле некоторые полезные функции внутреннего в пакет обув. Чтобы вызвать такую функцию, если вы знаете, что вы делаете, необходимо использовать :::
. Вам также необходимо знать пространство имен, в котором функция найдена. Использование getAnywhere()
мы находим, что функция находится в пакете Статистика:
> getAnywhere(plot.prcomp)
A single object matching ‘plot.prcomp’ was found
It was found in the following places
registered S3 method for plot from namespace stats
namespace:stats
with value
function (x, main = deparse(substitute(x)), ...)
screeplot.default(x, main = main, ...)
<environment: namespace:stats>
Так теперь мы можем назвать это непосредственно с помощью:
> stats:::plot.prcomp(mod)
Я использовал plot.prcomp
только в качестве примера для иллюстрации цели , При нормальном использовании вы не должны вызывать методы S3, подобные этому. Но, как я уже сказал, если функция, которую вы хотите вызвать, существует (например, это может быть скрытая функция полезности), но она находится в пространстве имен, R сообщит, что она не может найти функцию, если вы не укажете, какое пространство имен должно выглядеть in
Перед тем, как голосовать, чтобы закрыть этот вопрос, сначала прочтите эту disussion на мета: http://meta.stackexchange.com/questions/101892/community-wiki-with- common-error-messages-allowed/101901 # 101901 – Andrie
Если все остальное не удается, попробуйте grepping исходный код для базы R и установленных пакетов – nullglob
@nullgl ob Это кажется несколько экстремальным :-) –