নিজস্ব প্যাকেজ লেখার প্রস্তুতিতে অধ্যয়নের জন্য প্রথম আর প্যাকেজগুলির উত্স কোড


47

আমি আর প্যাকেজ লেখা শুরু করার পরিকল্পনা করছি।

আমি ভেবেছিলাম প্যাকেজ নির্মাণের কনভেনশন শিখতে বিদ্যমান প্যাকেজগুলির উত্স কোডটি অধ্যয়ন করা ভাল হবে।

অধ্যয়নের জন্য ভাল প্যাকেজগুলির জন্য আমার মানদণ্ড:

  • সাধারণ পরিসংখ্যান / প্রযুক্তিগত ধারণা : মূল বিষয় হ'ল প্যাকেজ নির্মাণের যান্ত্রিকতা সম্পর্কে। প্যাকেজটি বোঝার জন্য প্যাকেজের আসল বিষয় সম্পর্কে বিশদভাবে উচ্চতর ডোমেন নির্দিষ্ট জ্ঞানের প্রয়োজন হবে না।
  • সাধারণ এবং প্রচলিত কোডিং শৈলী : আমি এর চেয়ে আরও কিছু বেশি খুঁজছি Hello Worldতবে সম্পূর্ণ বেশি কিছু নয়। প্রথম প্যাকেজ প্যাকেজ শিখলে ইডিওসিসক্র্যাটিক ট্রিকস এবং হ্যাকগুলি বিভ্রান্ত করবে।
  • ভাল কোডিং শৈলী : কোড ভাল লেখা আছে। এটি উভয়ই ভাল কোডিংয়ের বোঝাপড়া, এবং সাধারণভাবে আর-তে কোডিংয়ের সম্মেলনের সচেতনতা প্রকাশ করে both

প্রশ্নাবলী:

  • কোন প্যাকেজগুলি পড়াশুনা করতে ভাল হবে?
  • প্রস্তাবিত প্যাকেজ উত্স কোডটি উপরে বর্ণিত মানদণ্ডগুলির সাথে তুলনামূলকভাবে পড়া বা কোনও প্রাসঙ্গিক যে কোনও মানদণ্ড প্রাসঙ্গিক হতে পারে কেন ভাল হবে?

আপডেট (13/12/2010) ডার্কের মন্তব্যের পরে আমি এটিকে পরিষ্কার করতে চেয়েছিলাম যে অনেক প্যাকেজ প্রথমে অধ্যয়ন করা ভাল। আমি এও সম্মত হই যে প্যাকেজগুলি বিভিন্ন জিনিসের জন্য মডেল সরবরাহ করবে (যেমন, ভিগনেটস, এস 3 ক্লাস, এস 4 ক্লাস, ইউনিট টেস্টিং, রক্সিজেন ইত্যাদি)। তা সত্ত্বেও, ভাল প্যাকেজগুলি শুরু করার জন্য এবং সেগুলি কেন ভাল প্যাকেজগুলি দিয়ে শুরু করা হবে তার কারণগুলি সম্পর্কে কংক্রিট পরামর্শগুলি পড়া আকর্ষণীয় হবে।

আমি "প্যাকেজ" পরিবর্তে "প্যাকেজগুলি" উল্লেখ করতে উপরের প্রশ্নটি আপডেট করেছি।


2
এটি দেখার আরেকটি উপায় হ'ল নির্দিষ্ট প্যাকেজ লেখকদের সন্ধান করা ; নির্দিষ্ট লেখকরা সর্বোত্তম অনুশীলনগুলি অনুসরণ করে এবং স্পষ্ট কোড লেখার ক্ষেত্রে খুব ভাল, এক্ষেত্রে আপনি তাদের সমস্ত উপকরণ অধ্যয়ন করতে পারেন।
শেন

1
@ শেন গুড পয়েন্ট প্রথম প্যাকেজ লিখতে শেখার সময় কোন প্যাকেজ লেখকরা পড়াশোনা করতে পারে সে সম্পর্কে কোনও পরামর্শ?
জেরোমি অ্যাংলিম

উত্তর:


15

আমি নীচের কারণে চিড়িয়াখানা প্যাকেজটি দেখার পরামর্শ দিচ্ছি :

  1. এটিতে বেশ কয়েকটি লিখিত ভিগনেট রয়েছে;
  2. এটা তোলে ব্যবহার করে একটি নামস্থান ব্যবহার useDynLib, import, export, এবং S3method;
  3. এটি ব্যবহার করে বেশ কয়েকটি ইউনিট পরীক্ষা রয়েছে RUnit;
  4. এটি S3 পদ্ধতিগুলি কীভাবে তৈরি / ডকুমেন্ট করার ভাল উদাহরণ দেয়;
  5. এটি .Callইন্টারফেসের মাধ্যমে সি কোডে কিছু কল রয়েছে ;
  6. এটিতে একটি (চক্রান্ত) ডেমো রয়েছে;
  7. এটি মূল আর ইনস্টলেশনের সাথে সামঞ্জস্যপূর্ণ হওয়ার লক্ষ্য রাখে (উদাহরণস্বরূপ ফাংশনগুলি একইভাবে আচরণ করে, এটি মাস্ক করে / বেস ফাংশনগুলিকে ওভাররাইড করে না ইত্যাদি)

এটি রজিন ব্যবহার করে না যা খুব সহজ, তবে 8 টির মধ্যে 7 টি খারাপ নয়। ;-)

আপনার মানদণ্ডে সাড়া দিতে:

  1. ধারণাটি সহজ: zooএকটি ম্যাট্রিক্সের মতো শ্রেণি যা কোনও কিছু দ্বারা অর্ডার করা হয় । কোনও ডোমেন-নির্দিষ্ট জ্ঞানের প্রয়োজন নেই।
  2. zoo মনে হচ্ছে কয়েকটি আইডিসিঙ্ক্র্যাটিক কোডিং কনভেনশন রয়েছে তবে কোডটি বুঝতে বাধা দেয় এমন শীর্ষের কিছু নেই।
  3. zoo যতটা সম্ভব আর এর সাথে সামঞ্জস্যপূর্ণ হওয়ার লক্ষ্য।

1
এই প্যাকেজটি কোথায় পাওয়া যাবে?
অ্যাডাম SA

@ অ্যাডাম: আমি আমার উত্তরে চিড়িয়াখানায় একটি লিঙ্ক যুক্ত করেছি। সেই পৃষ্ঠাটিতে চিড়িয়াখানার আর-ফোর্স প্রকল্পের পৃষ্ঠার লিঙ্কও রয়েছে।
জোশুয়া উলরিচ

9

আমি নিজেকে প্রতিষ্ঠিত আর প্যাকেজ বিকাশকারী হিসাবে বিবেচনা করি না তবে সম্প্রতি আমার কাজের পরিবেশের জন্য একটি প্যাকেজ লেখার এবং রক্ষণাবেক্ষণের প্রক্রিয়াটি চলছে।

আমি পূর্বে source()ফাংশনটির মাধ্যমে প্রকল্প থেকে প্রকল্পে পাস করব এমন স্ক্রিপ্টগুলির সেট / রক্ষণ / আপডেট করেছিলাম । এর শেষ পরিণতিটি হ'ল আমি আমাদের নেটওয়ার্ক ড্রাইভের বিভিন্ন স্থানে ফাঁকা বেশিরভাগ অপ্রয়োজনীয় স্ক্রিপ্টগুলি দিয়ে এসেছি। স্ক্রিপ্টগুলির সর্বাধিক আপ-টু-ডেট সেটটি কোথায় ছিল তা কখনই পরিষ্কার ছিল না। আমি তখন থেকে রক্সিজেন ব্যবহার করে একটি প্যাকেজ লেখার / রক্ষণাবেক্ষণে স্থানান্তরিত হয়েছি। এটি আমার জীবনকে মারাত্মকভাবে সরল করেছে এবং সহকর্মীদের সাথে আমার কাজ ভাগ করে নেওয়া সহজ করেছে।

আপনার উপরের মানদণ্ডের উপর ভিত্তি করে, আমি হ্যাডলি লিখেছেন এমন প্যাকেজগুলি পর্যালোচনা করার সুপারিশটিকে দ্বিতীয় করে দিই। বিশেষত, আমি মনে করি দেবতুল্য উইকির মাধ্যমে পড়া খুব সহায়ক হবে। হ্যাডলির কোডটি ভালভাবে নথিভুক্ত হয়েছে এবং তার বেশ কয়েকটি প্যাকেজ রকজিন ব্যবহার করে। আমি মনে করি আর ফাংশন এবং আর ডকুমেন্টেশন উভয়ের জন্য একটি ডকুমেন্ট রচনা এবং রক্ষণাবেক্ষণ দুটি স্থান (.R এবং .RD ফাইল) এ বিভক্ত হওয়ার চেয়ে অনেক সহজ।

হ্যাডলির প্যাকেজগুলি কিছু মোটামুটি মৌলিক ধারণাগুলিও সরবরাহ করে এবং যদি আপনি প্রযুক্তিগত দিকের ধারণাগুলির জন্য পয়েন্টার সন্ধান করেন তবে তুলনামূলকভাবে সহজ (ইমো)। আমি যখন প্লিজার ডকুমেন্টেশন বা অন্যান্য মৌলিক কাজগুলির জন্য একটি পয়েন্টার খুঁজছি তখন আমি প্লেয়ার উত্স কোডটি খনন করতে দেখি


ধন্যবাদ। ডেভলটুলস উইকির বিশেষত প্রচুর দুর্দান্ত ধারণা রয়েছে।
জেরোমি অ্যাংলিম

@ জারোমি - প্রজননযোগ্য গবেষণা ইত্যাদির উপর আপনার সাম্প্রতিক পোস্টগুলি পড়ে (উবার উবার সহায়ক তাই আপনাকে ধন্যবাদ!) এর অর্থ হল আপনি খুব তাড়াতাড়ি রিক্সিয়নে নিয়ে যাবেন। আমার এটাও উল্লেখ করা উচিত ছিল যে Eclipse রক্সিজেন সিনট্যাক্সকে সমর্থন করে এবং এটি একটি সুন্দর সহজ রূপান্তর করেছে। আমি যে সবচেয়ে কঠিন কাজটি পেরেছি তা হ'ল ভিনিগেটগুলি লেখা যা দরকারী এবং উত্পাদনশীল। আমি ভাবছি আপনি এই বিষয়ে আমার চেয়ে অনেক বেশি লাফিয়ে উঠার পয়েন্ট থেকে শুরু করছেন।
চেজ

2
কেবল ggplot2 উত্সটি পড়বেন না। এটি আপনার মস্তিষ্ককে রক্তক্ষরণে পরিণত করবে
হ্যাডলি

কী সৎ আর বিকাশকারী!
Leo5188

7

কেন একটি অভিজ্ঞতামূলক চালিত র্যান্ডম নমুনা পদ্ধতির গ্রহণ করবেন না? কয়েকটি বেছে নিন এবং দেখুন আপনার জন্য কোনটি কাজ করে।

একসাথে মজা করা, আপনি নিজেরাই ব্যবহার করেন এমন কয়েকটি প্যাকেজ দেখুন এবং এর সাথে পরিচিত familiar এগুলি ডাউনলোড করা সহজ, বা আপনি যদি পছন্দ করেন তবে আপনি সেগুলি আর-ফোর্স, আরফোরজ বা গিথুব-এ ওয়েব ইন্টারফেসের মাধ্যমেও দেখতে পারেন।

আপনি সম্ভবত বিভিন্ন ধারণার জন্য বিভিন্ন প্যাকেজ সঙ্গে শেষ করতে হবে। কেউ কেউ আপনাকে যেভাবে একীভূত করতে পারে, বলুন, একটি ভিনগেটে আপনাকে সহায়তা করতে পারে। কিছু সংকলিত কোডে সহায়তা করতে পারে। বা ইউনিট পরীক্ষা। বা রক্সিজেন। এর মধ্যে প্রায় 2600 রয়েছে, তবে কেন একক সেরাকে কেন্দ্র করে আচ্ছন্ন?


দুর্দান্ত পয়েন্ট। আমি নিজেকে অন্বেষণ করার পরিকল্পনা করছিলাম। এবং অবশ্যই, অনুসন্ধান অর্ধেক মজা। এবং আমি বিভিন্ন প্যাকেজ বিভিন্ন জিনিস শেখাতে সম্মত। আমি সম্মত হই যে অনেক প্যাকেজ ভাল সূচনা পয়েন্ট হতে পারে। আমি একাধিক প্যাকেজ মানদণ্ড পূরণ করবে এই ধারণা প্রতিফলিত করতে আমার প্রশ্ন আপডেট করব। তবে কিছু দৃ concrete় পরামর্শ দেওয়ার ফলে আমি এবং অন্যদের আর প্যাকেজগুলিতে কিছুটা সময় সাশ্রয় করতে পারি। আমি আরও মনে করি যে আর প্যাকেজগুলির প্রতিষ্ঠিত বিকাশকারীরা শেখার উদ্দেশ্যে কোনও প্রদত্ত প্যাকেজের গুণাগুণ সম্পর্কে মন্তব্য করার জন্য আরও ভাল অবস্থানে রয়েছে।
জেরোমি অ্যাংলিম

2
আপনাকে কোথাও শুরু করতে হবে :)
hans0l0

2

পরামর্শ অন্য টুকরা প্যাকেজ পুলিশের উপর নির্ভর করে করা বা সাথে আলাপচারিতার, বিশেষ করে যদি এই কিছু বাস্তবায়ন তাকান হতে পারে আইটেম জশুয়া উলরিখ উল্লিখিত বা প্রখ্যাত লেখক দ্বারা লিখিত হয়েছে। কিছুটা সামঞ্জস্যতা নিশ্চিত করতে আপনার ক্ষেত্রে কীভাবে জিনিসগুলি করা হয় তা শিখতে সহায়ক হতে পারে। প্রায়শই লোকেরা নির্দিষ্ট কিছু সমস্যা সম্পর্কে চিন্তাভাবনা করবে এবং তাদের সমাধানগুলি পড়া সমাধান সহায়ক হবে।


1

আমি হ্যাডলির পুনরায় আকার প্যাকেজটি সুপারিশ করব। আপনি উত্সটি https://github.com/hadley/reshape এ খুঁজে পেতে পারেন


2
ধন্যবাদ। আপনি এটি সুপারিশ করেন কেন?
জেরোমি অ্যাংলিম

4
আমি পুনরায় আকার দেওয়ার প্রস্তাব দেব না - এমনকি এটি কীভাবে কাজ করে তা আমি বুঝতে পারি না। পুনঃ আকার 2 আরও অনেক ভাল এবং আরও অনেক ভাল উন্নয়নের নীতি অনুসরণ করে।
হ্যাডলি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.