UseMethod("t")আপনাকে জানিয়ে দিচ্ছি যে t()একটি ( এস 3 ) জেনেরিক ফাংশন যার বিভিন্ন অবজেক্ট শ্রেণির জন্য পদ্ধতি রয়েছে।
এস 3 পদ্ধতি প্রেরণ সিস্টেম
এস 3 ক্লাসের জন্য, আপনি methodsনির্দিষ্ট জেনেরিক ফাংশন বা শ্রেণীর জন্য পদ্ধতিগুলি তালিকাভুক্ত করতে ফাংশনটি ব্যবহার করতে পারেন ।
> methods(t)
[1] t.data.frame t.default t.ts*
Non-visible functions are asterisked
> methods(class="ts")
[1] aggregate.ts as.data.frame.ts cbind.ts* cycle.ts*
[5] diffinv.ts* diff.ts kernapply.ts* lines.ts
[9] monthplot.ts* na.omit.ts* Ops.ts* plot.ts
[13] print.ts time.ts* [<-.ts* [.ts*
[17] t.ts* window<-.ts* window.ts*
Non-visible functions are asterisked
"অ-দৃশ্যমান ফাংশনগুলি asterisked হয়" অর্থ ফাংশনটি তার প্যাকেজের নাম স্থান থেকে রফতানি করা হয় না। আপনি এখনও মাধ্যমে তার সোর্স কোড দেখতে পারেন :::(যেমন ফাংশন stats:::t.ts), অথবা ব্যবহার করে getAnywhere()। getAnywhere()দরকারী কারণ আপনি কোন প্যাকেজটি প্যাকেজটি এসেছিলেন তা জানতে হবে না।
> getAnywhere(t.ts)
A single object matching ‘t.ts’ was found
It was found in the following places
registered S3 method for t from namespace stats
namespace:stats
with value
function (x)
{
cl <- oldClass(x)
other <- !(cl %in% c("ts", "mts"))
class(x) <- if (any(other))
cl[other]
attr(x, "tsp") <- NULL
t(x)
}
<bytecode: 0x294e410>
<environment: namespace:stats>
এস 4 পদ্ধতি প্রেরণ সিস্টেম
এস 4 সিস্টেমটি একটি নতুন পদ্ধতি প্রেরণ সিস্টেম এবং এস 3 সিস্টেমের বিকল্প। এখানে একটি এস 4 ফাংশনের উদাহরণ রয়েছে:
> library(Matrix)
Loading required package: lattice
> chol2inv
standardGeneric for "chol2inv" defined from package "base"
function (x, ...)
standardGeneric("chol2inv")
<bytecode: 0x000000000eafd790>
<environment: 0x000000000eb06f10>
Methods may be defined for arguments: x
Use showMethods("chol2inv") for currently available ones.
আউটপুট ইতিমধ্যে প্রচুর তথ্য সরবরাহ করে। standardGenericএটি একটি এস 4 ফাংশনের সূচক। সংজ্ঞায়িত এস 4 পদ্ধতিগুলি দেখার পদ্ধতিটি সহায়কভাবে দেওয়া হয়:
> showMethods(chol2inv)
Function: chol2inv (package base)
x="ANY"
x="CHMfactor"
x="denseMatrix"
x="diagonalMatrix"
x="dtrMatrix"
x="sparseMatrix"
getMethod পদ্ধতির একটির সোর্স কোড দেখতে ব্যবহার করা যেতে পারে:
> getMethod("chol2inv", "diagonalMatrix")
Method Definition:
function (x, ...)
{
chk.s(...)
tcrossprod(solve(x))
}
<bytecode: 0x000000000ea2cc70>
<environment: namespace:Matrix>
Signatures:
x
target "diagonalMatrix"
defined "diagonalMatrix"
প্রতিটি পদ্ধতির আরও জটিল স্বাক্ষর সহ এমন পদ্ধতিও রয়েছে, উদাহরণস্বরূপ
require(raster)
showMethods(extract)
Function: extract (package raster)
x="Raster", y="data.frame"
x="Raster", y="Extent"
x="Raster", y="matrix"
x="Raster", y="SpatialLines"
x="Raster", y="SpatialPoints"
x="Raster", y="SpatialPolygons"
x="Raster", y="vector"
এর মধ্যে একটি পদ্ধতির উত্স কোড দেখতে সম্পূর্ণ স্বাক্ষর সরবরাহ করতে হবে, যেমন
getMethod("extract" , signature = c( x = "Raster" , y = "SpatialPolygons") )
আংশিক স্বাক্ষর সরবরাহ করার জন্য এটি পর্যাপ্ত হবে না
getMethod("extract",signature="SpatialPolygons")
#Error in getMethod("extract", signature = "SpatialPolygons") :
# No method found for function "extract" and signature SpatialPolygons
যে ক্রিয়াকলাপগুলি অনির্বাচিত ফাংশনগুলিকে কল করে
ক্ষেত্রে ts.union, .cbindtsএবং নেমস্পেস .makeNamesTsথেকে অপ্রত্যাশিত ফাংশনগুলি stats। আপনি :::অপারেটর ব্যবহার করে বা অপ্রয়োজনীয় ফাংশনগুলির উত্স কোড দেখতে পারেন getAnywhere।
> stats:::.makeNamesTs
function (...)
{
l <- as.list(substitute(list(...)))[-1L]
nm <- names(l)
fixup <- if (is.null(nm))
seq_along(l)
else nm == ""
dep <- sapply(l[fixup], function(x) deparse(x)[1L])
if (is.null(nm))
return(dep)
if (any(fixup))
nm[fixup] <- dep
nm
}
<bytecode: 0x38140d0>
<environment: namespace:stats>
সংযুক্ত কোড কল যে ফাংশন
নোট করুন যে "সংকলিত" সংকলক প্যাকেজটির দ্বারা তৈরি বাইট-সংকলিত আর কোডকে বোঝায় না । দ্য<bytecode: 0x294e410>উপরে আউটপুটে লাইন নির্দেশ করে ফাংশন বাইট-কম্পাইল যে, এবং আপনি এখনও আর কম্যান্ড লাইন থেকে উৎস দেখতে পারেন।
কার্যাবলী যে কল .C, .Call, .Fortran, .External, .Internal, অথবা .Primitiveকম্পাইল কোডে এন্ট্রি পয়েন্ট আহ্বান করা হয়, তাই আপনি কম্পাইল কোড উৎস তাকান যদি আপনি সম্পূর্ণরূপে ফাংশন বুঝতে চাই থাকবে। আর উত্স কোডের এই গিটহাব আয়নাটি শুরু করার জন্য একটি শালীন জায়গা। ফাংশনটি pryr::show_c_sourceএকটি দরকারী সরঞ্জাম হতে পারে কারণ এটি আপনাকে সরাসরি গিটহাব পৃষ্ঠায় নিয়ে যায় .Internalএবং .Primitiveকল করতে পারে। প্যাকেজগুলি ব্যবহার করতে পারেন .C, .Call, .Fortran, এবং .External; কিন্তু না .Internalবা.Primitive , কারণ এগুলি আর ইন্টারপ্লেটারে অন্তর্নির্মিত ফাংশনগুলি কল করতে ব্যবহৃত হয়।
উপরের কয়েকটি ফাংশনগুলিতে কলগুলি সংকলিত ফাংশনটি উল্লেখ করতে অক্ষর স্ট্রিংয়ের পরিবর্তে কোনও অবজেক্ট ব্যবহার করতে পারে। সেসব ক্ষেত্রে, অবজেক্ট যেটা ক্লাসের হয় "NativeSymbolInfo", "RegisteredNativeSymbol"অথবা "NativeSymbol"; এবং অবজেক্টটি মুদ্রণ করলে দরকারী তথ্য পাওয়া যায়। উদাহরণস্বরূপ, optimকল .External2(C_optimhess, res$par, fn1, gr1, con)(নোট যে এর C_optimhessনা "C_optimhess")। optimপরিসংখ্যান প্যাকেজে রয়েছে তাই আপনি টাইপ করতে পারেনstats:::C_optimhess সংকলিত ফাংশনটির জন্য ডাকা হচ্ছে এমন তথ্য দেখতে করতে পারেন।
একটি প্যাকেজে কোড সংকলিত
আপনি যদি কোনও প্যাকেজে সংকলিত কোড দেখতে চান তবে আপনাকে প্যাকেজ উত্সটি ডাউনলোড / আনপ্যাক করতে হবে। ইনস্টলড বাইনারিগুলি পর্যাপ্ত নয়। প্যাকেজটির উত্স কোডটি একই ক্র্যান (বা CRAN সামঞ্জস্যপূর্ণ) সংগ্রহস্থল থেকে পাওয়া যায় যা প্যাকেজটি মূলত ইনস্টল করা হয়েছিল। download.packages()ফাংশন তোমার জন্য প্যাকেজ উৎস পেতে পারেন।
download.packages(pkgs = "Matrix",
destdir = ".",
type = "source")
এটি ম্যাট্রিক্স প্যাকেজের উত্স সংস্করণ ডাউনলোড করবে এবং .tar.gzবর্তমান ডিরেক্টরিতে সংশ্লিষ্ট ফাইলটি সংরক্ষণ করবে । সংকলিত ফাংশনগুলির জন্য সোর্স কোডটি srcসঙ্কুচিত এবং অপরিশোধিত ফাইলের ডিরেক্টরিতে পাওয়া যাবে । আপত্তিজনক এবং অপরিবর্তনীয় পদক্ষেপটি বাইরে Rবা ফাংশনটি Rব্যবহারের মাধ্যমে করা যেতে untar()পারে। ডাউনলোড এবং সম্প্রসারণের পদক্ষেপটি একক কলের সাথে একত্রিত করা সম্ভব (নোট করুন যে একবারে কেবল একটি প্যাকেজ এইভাবে ডাউনলোড এবং আনপ্যাক করা যায়):
untar(download.packages(pkgs = "Matrix",
destdir = ".",
type = "source")[,2])
বিকল্পভাবে, যদি প্যাকেজ বিকাশটি সর্বজনীনভাবে হোস্ট করা হয় (যেমন গিটহাব , আর-ফোর্জ , বা আরফোরজ নেট এর মাধ্যমে ), আপনি সম্ভবত উত্স কোডটি ব্রাউজ করতে পারেন।
একটি বেস প্যাকেজে কোড সংকলিত
কিছু প্যাকেজগুলি "বেস" প্যাকেজ হিসাবে বিবেচিত হয়। এই প্যাকেজগুলি আর সঙ্গে অর্ণবপোত এবং তাদের সংস্করণ আর উদাহরণ সংস্করণ লক তা অন্তর্ভূক্ত base, compiler, stats, এবং utils। যেমন, উপরে বর্ণিত হিসাবে এগুলি CRAN এ আলাদা ডাউনলোডযোগ্য প্যাকেজ হিসাবে উপলভ্য নয়। বরং তারা পৃথক পৃথক প্যাকেজ ডিরেক্টরিতে আর উত্স গাছের অংশ /src/library/। কীভাবে আর উত্স অ্যাক্সেস করবেন তা পরবর্তী বিভাগে বর্ণিত হয়েছে।
আরপি ইন্টারপ্রেটারে সংকলিত কোড
আপনি যদি আর ইন্টারপ্রেটারের অন্তর্নির্মিত কোডটি দেখতে চান তবে আপনাকে আর উত্স ডাউনলোড / আনপ্যাক করতে হবে; অথবা আপনি আর সাবভার্সন সংগ্রহশালা বা উইনস্টন চ্যাংয়ের গিথুব আয়নার মাধ্যমে অনলাইনে উত্সগুলি দেখতে পারেন ।
উউই লিগেসের আর নিউজ নিবন্ধ (পিডিএফ) (পৃষ্ঠা 43) হ'ল সোর্স কোড .Internalএবং .Primitiveফাংশনগুলি কীভাবে দেখতে হবে তার একটি ভাল সাধারণ রেফারেন্স । প্রাথমিক পদক্ষেপগুলি হ'ল প্রথমে ফাংশনটির নামটি src/main/names.cঅনুসন্ধান করা এবং তারপরে ফাইলগুলিতে "সি-এন্ট্রি" নাম অনুসন্ধান করা src/main/*।