আমি ডেটা টেবিল ব্যবহার করছি এবং অনেকগুলি ফাংশন রয়েছে যার জন্য আমাকে একটি কী (যেমন X[Y]) সেট করতে হবে । এই হিসাবে, আমি আমার ডেটা টেবিলগুলিতে কীগুলি সঠিকভাবে সেট করতে একটি কী কী তা বুঝতে আগ্রহী।
আমি পড়েছিলাম একটি উত্স ছিল ?setkey।
setkey()একটি বাছাই করেdata.tableএবং চিহ্ন হিসাবে এটি সাজানো। সাজানো কলামগুলি হ'ল চাবিকাঠি। কীটি কোনও ক্রমে যে কোনও কলাম হতে পারে। কলামগুলি সর্বদা ক্রমবর্ধমান ক্রমে সাজানো হয়। টেবিলটি রেফারেন্স দ্বারা পরিবর্তিত হয়। এক কলামের মতো অস্থায়ী কাজের স্মৃতি ছাড়া অন্য কোনও অনুলিপি তৈরি হয় না।
এখানে আমার গ্রহণযোগ্যতাটি হ'ল কোনও কীটি ডেটাটিকে "বাছাই" করে দেয় able টেবিল, এর ফলে খুব অনুরূপ প্রভাব পড়ে order()। তবে এটি চাবি থাকার উদ্দেশ্য ব্যাখ্যা করে না।
ডেটা.টিবেল এফএকিউ 3.2 এবং 3.3 ব্যাখ্যা করে:
৩.২ বড় টেবিলে আমার কী নেই, তবে গ্রুপিং এখনও সত্যই দ্রুত। কেন এমন?
ডেটা.ট্যাবেলে র্যাডিক্স বাছাই ব্যবহার করা হয়। এটি অন্যান্য ধরণের অ্যালগরিদমের তুলনায় লক্ষণীয়ভাবে দ্রুত। মূলগুলি কেবলমাত্র পূর্ণসংখ্যার জন্যই হয়, দেখুন
?base::sort.list(x,method="radix")।setkey()দ্রুত হওয়া কেন এটিও একটি কারণ । যখন কোনও কী সেট করা হয় না, বা আমরা কী থেকে আলাদা ক্রমে গোষ্ঠী করি, আমরা এটিকে একটি অ্যাডহক বলি।৩.৩ কেনে কলামগুলিতে গ্রুপিং করা হচ্ছে এইডের চেয়ে দ্রুত?
যেহেতু প্রতিটি গোষ্ঠী র্যামের সাথে সংলগ্ন, এর ফলে পৃষ্ঠা আনা কমান, এবং মেমরিটি
memcpyসি তে লুপিংয়ের পরিবর্তে বাল্ক ( সি) তে অনুলিপি করা যায়
এখান থেকে, আমি অনুমান করি যে কোনও কীটি সেট করার ফলে আরকে অন্যান্য অ্যালগরিদমের উপর "রেডিক্স বাছাই করা" ব্যবহার করার অনুমতি দেওয়া হয়, এবং সে কারণেই এটি আরও দ্রুত।
10 মিনিটের দ্রুত শুরু গাইডের কীগুলির জন্য একটি গাইডও রয়েছে।
- কী
আসুন ডেটা.ফ্রেমে বিবেচনা করে শুরু করা যাক, বিশেষত রোনাম (বা ইংরাজীতে, সারি নাম)। অর্থাৎ একক সারিতে থাকা একাধিক নাম। একক সারিতে একাধিক নাম? এটি একটি ডেটা.ফ্রেমে আমরা অভ্যস্ত নই। আমরা জানি যে প্রতিটি সারিতে সর্বাধিক একটির নাম রয়েছে। একজন ব্যক্তির কমপক্ষে দুটি নাম, প্রথম নাম এবং দ্বিতীয় নাম থাকে। এটি একটি টেলিফোন ডিরেক্টরি সংগঠিত করতে দরকারী, উদাহরণস্বরূপ, যা নাম দ্বারা সাজানো হয়, তারপরে প্রথম নাম। তবে ডেটা.ফ্রেমে প্রতিটি সারিতে কেবল একটি নাম থাকতে পারে।
একটি কীটিতে রোউনামগুলির এক বা একাধিক কলাম রয়েছে, যা পূর্ণসংখ্যার, গুণক, চরিত্র বা অন্য কোনও শ্রেণি হতে পারে, কেবল চরিত্র নয়। তদতিরিক্ত, সারিগুলি কী দ্বারা বাছাই করা হয়। অতএব, একটি ডেটা টেবিলের সর্বাধিক একটি কী থাকতে পারে কারণ এটি একাধিক উপায়ে বাছাই করা যায় না।
স্বতন্ত্রতা প্রয়োগ করা হয় না, অর্থাত নকল কী মান অনুমোদিত। যেহেতু সারিগুলি কী অনুসারে বাছাই করা হয়েছে, চাবির কোনও সদৃশ ক্রমাগত প্রদর্শিত হবে
টেলিফোন ডিরেক্টরিটি কী কী তা বোঝার জন্য সহায়ক ছিল, তবে ফ্যাক্টর কলামের তুলনায় কোনও কীটি আলাদা নয় বলে মনে হয়। তদ্ব্যতীত, কী কী প্রয়োজন (বিশেষত কিছু নির্দিষ্ট ক্রিয়াকলাপ ব্যবহার করতে হয়) এবং কী হিসাবে কী হিসাবে সেট করতে কলামটি চয়ন করবেন তা এটি ব্যাখ্যা করে না। এছাড়াও, মনে হয় যে একটি কলাম হিসাবে সময়ের সাথে একটি তথ্য। টেবিলের সাথে, অন্য কোনও কলামটি কী হিসাবে সেট করা সম্ভবত সময় কলামকেও বিচলিত করে দেবে, যা এটিকে আরও বিভ্রান্তিকর করে তোলে কারণ আমি জানি না যে আমাকে অন্য কোনও কলাম সেট করার অনুমতি রয়েছে কিনা? চাবি. আমাকে দয়া করে কেউ আলোকিত করতে পারেন?