Başka bir sorun, bir NAMESPACE varlığında, paket foo dışa aktarılmamış bir işlevi çalıştırmak için çalışıyor olmasıdır .
Örneğin (yaptım, biliyorum, ama):
> mod <- prcomp(USArrests, scale = TRUE)
> plot.prcomp(mod)
Error: could not find function "plot.prcomp"
İlk olarak, S3 yöntemlerini doğrudan çağırmamalısınız, ancak plot.prcomppaket foo'da aslında bazı yararlı dahili işlev olduğunu varsayalım . Ne yaptığınızı biliyorsanız böyle bir işlevi çağırmak için kullanımını gerektirir :::. Ayrıca işlevin bulunduğu ad alanını da bilmeniz gerekir. Kullanarak getAnywhere()işlevin paket istatistiklerinde olduğunu görüyoruz :
> 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>
Şimdi doğrudan şunu kullanarak arayabiliriz:
> stats:::plot.prcomp(mod)
Kullandım plot.prcompAmacı açıklamak için örnek olarak . Normal kullanımda böyle S3 yöntemlerini çağırmamalısınız. Ama dediğim gibi, aramak istediğiniz işlev mevcutsa (örneğin gizli bir yardımcı program işlevi olabilir), ancak a'da namespace, R, hangi ad alanına bakacağınızı söylemediğiniz sürece işlevi bulamayacağını bildirir. .
Bunu aşağıdakilerle karşılaştırın:
stats::plot.prcomp
Yukarıdaki başarısız olur, çünkü statskullanılırken plot.prcompdışa aktarılmazstats hatalar bize söylediği gibi, :
Hata: 'plot.prcomp', 'ad alanı: istatistiklerden' dışa aktarılan bir nesne değil
Bu aşağıdaki gibi belgelenmiştir:
pkg :: name, pkg ad alanındaki dışa aktarılan değişken adının değerini döndürürken, pkg ::: name dahili değişken adının değerini döndürür.