স্ট্রিংয়ের দুটি ভেক্টরকে (আরে) মিলিয়ে কীভাবে করব?


36

এটিকে কীভাবে বলা হবে আমি নিশ্চিত নই, সুতরাং আপনি যদি আরও ভাল শব্দটি জানেন তবে দয়া করে আমাকে সংশোধন করুন।

আমি দুটি তালিকা পেয়েছি। 55 টি আইটেমের মধ্যে একটি (যেমন: স্ট্রিংগুলির একটি ভেক্টর), অন্য 92 টি The আইটেমের নামগুলি একই রকম তবে অভিন্ন নয়।

আমি ভাল প্রার্থী খুঁজে পেতে চান গুলি 55 তালিকায় আইটেমগুলি (আমি তারপর, এটা মধ্য দিয়ে যেতে এবং সঠিক ফিটিং বাছাই হবে) থেকে 92 তালিকায়।

এটা কিভাবে করা যাবে?

আমার যেখানে ধারণা ছিল:

  1. মেলে এমন সমস্তগুলি দেখুন (কিছু তালিকার ব্যবহার? ম্যাচ)
  2. স্ট্রিং ভেক্টরগুলির মধ্যে একটি দূরত্বের ম্যাট্রিক্স চেষ্টা করে দেখুন তবে কীভাবে এটি সর্বোত্তমভাবে সংজ্ঞা দেওয়া যায় তা আমি নিশ্চিত নই (একই অক্ষরের সংখ্যা, স্ট্রিংগুলির ক্রম সম্পর্কে কী?)

তাহলে কোন প্যাকেজ / ফাংশন / ফিল্ড-অফ-রিসার্চ এই জাতীয় কোনও কাজের সাথে সম্পর্কিত এবং কীভাবে?

আপডেট: আমি ভেক্টরগুলির সাথে মেলে থাকতে চাই তার একটি উদাহরণ এখানে

vec55 <- c("Aeropyrum pernix", "Archaeoglobus fulgidus", "Candidatus_Korarchaeum_cryptofilum", 
"Candidatus_Methanoregula_boonei_6A8", "Cenarchaeum_symbiosum", 
"Desulfurococcus_kamchatkensis", "Ferroplasma acidarmanus", "Haloarcula_marismortui_ATCC_43049", 
"Halobacterium sp.", "Halobacterium_salinarum_R1", "Haloferax volcanii", 
"Haloquadratum_walsbyi", "Hyperthermus_butylicus", "Ignicoccus_hospitalis_KIN4", 
"Metallosphaera_sedula_DSM_5348", "Methanobacterium thermautotrophicus", 
"Methanobrevibacter_smithii_ATCC_35061", "Methanococcoides_burtonii_DSM_6242"
)
vec91 <- c("Acidilobus saccharovorans 345-15", "Aciduliprofundum boonei T469", 
"Aeropyrum pernix K1", "Archaeoglobus fulgidus DSM 4304", "Archaeoglobus profundus DSM 5631", 
"Caldivirga maquilingensis IC-167", "Candidatus Korarchaeum cryptofilum OPF8", 
"Candidatus Methanoregula boonei 6A8", "Cenarchaeum symbiosum A", 
"Desulfurococcus kamchatkensis 1221n", "Ferroglobus placidus DSM 10642", 
"Halalkalicoccus jeotgali B3", "Haloarcula marismortui ATCC 43049", 
"Halobacterium salinarum R1", "Halobacterium sp. NRC-1", "Haloferax volcanii DS2", 
"Halomicrobium mukohataei DSM 12286", "Haloquadratum walsbyi DSM 16790", 
"Halorhabdus utahensis DSM 12940", "Halorubrum lacusprofundi ATCC 49239", 
"Haloterrigena turkmenica DSM 5511", "Hyperthermus butylicus DSM 5456", 
"Ignicoccus hospitalis KIN4/I", "Ignisphaera aggregans DSM 17230", 
"Metallosphaera sedula DSM 5348", "Methanobrevibacter ruminantium M1", 
"Methanobrevibacter smithii ATCC 35061", "Methanocaldococcus fervens AG86", 
"Methanocaldococcus infernus ME", "Methanocaldococcus jannaschii DSM 2661", 
"Methanocaldococcus sp. FS406-22", "Methanocaldococcus vulcanius M7", 
"Methanocella paludicola SANAE", "Methanococcoides burtonii DSM 6242", 
"Methanococcus aeolicus Nankai-3", "Methanococcus maripaludis C5", 
"Methanococcus maripaludis C6", "Methanococcus maripaludis C7", 
"Methanococcus maripaludis S2", "Methanococcus vannielii SB", 
"Methanococcus voltae A3", "Methanocorpusculum labreanum Z", 
"Methanoculleus marisnigri JR1", "Methanohalobium evestigatum Z-7303", 
"Methanohalophilus mahii DSM 5219", "Methanoplanus petrolearius DSM 11571", 
"Methanopyrus kandleri AV19", "Methanosaeta thermophila PT", 
"Methanosarcina acetivorans C2A", "Methanosarcina barkeri str. Fusaro", 
"Methanosarcina mazei Go1", "Methanosphaera stadtmanae DSM 3091", 
"Methanosphaerula palustris E1-9c", "Methanospirillum hungatei JF-1", 
"Methanothermobacter marburgensis str. Marburg", "Methanothermobacter thermautotrophicus str. Delta H", 
"Nanoarchaeum equitans Kin4-M", "Natrialba magadii ATCC 43099", 
"Natronomonas pharaonis DSM 2160", "Nitrosopumilus maritimus SCM1", 
"Picrophilus torridus DSM 9790", "Pyrobaculum aerophilum str. IM2", 
"Pyrobaculum arsenaticum DSM 13514", "Pyrobaculum calidifontis JCM 11548", 
"Pyrobaculum islandicum DSM 4184", "Pyrococcus abyssi GE5", "Pyrococcus furiosus DSM 3638", 
"Pyrococcus horikoshii OT3", "Staphylothermus hellenicus DSM 12710", 
"Staphylothermus marinus F1", "Sulfolobus acidocaldarius DSM 639", 
"Sulfolobus islandicus L.D.8.5", "Sulfolobus islandicus L.S.2.15", 
"Sulfolobus islandicus M.14.25", "Sulfolobus islandicus M.16.27", 
"Sulfolobus islandicus M.16.4", "Sulfolobus islandicus Y.G.57.14", 
"Sulfolobus islandicus Y.N.15.51", "Sulfolobus solfataricus P2", 
"Sulfolobus tokodaii str. 7", "Thermococcus gammatolerans EJ3", 
"Thermococcus kodakarensis KOD1", "Thermococcus onnurineus NA1", 
"Thermococcus sibiricus MM 739", "Thermofilum pendens Hrk 5", 
"Thermoplasma acidophilum DSM 1728", "Thermoplasma volcanium GSS1", 
"Thermoproteus neutrophilus V24Sta", "Thermosphaera aggregans DSM 11486", 
"Vulcanisaeta distributa DSM 14429", "uncultured methanogenic archaeon RC-I"
) 

2
হাই তাল:> এগুলি টাইপ-মুক্ত বৈজ্ঞানিক নাম বলে মনে হচ্ছে, আমি প্রথমে লেভেনস্টাইন মেট্রিক চেষ্টা করব (92-বাই-55 দূরত্বের ম্যাট্রিক্সের প্রসঙ্গে) এবং দেখুন কীভাবে এটি প্রকাশিত হয়।
ব্যবহারকারী 60

2
কিছু সময় পরে, stringdistপ্যাকেজটি এই ধরণের জিনিসটির জন্য সেরা উত্স বলে মনে হচ্ছে।
shabbychef

উত্তর:


19

আমারও একই রকম সমস্যা হয়েছে। (এখানে দেখা হয়েছে: https://stackoverflow.com/questions/2231993/merging-two-data-frames- using-fuzzy-approtimate-string-matching-in-r )

আমি যে সুপারিশ পেয়েছি সেগুলির বেশিরভাগই প্রায় পড়ে গিয়েছিল:

pmatch()আর agrep(), grep(), grepl()তিনটি কার্যকারিতা হয় যে আপনি যদি সময় লাগতে মাধ্যমে সন্ধান করতে আনুমানিক স্ট্রিং বা আনুমানিক Regex দ্বারা পারেন আনুমানিক স্ট্রিং ম্যাচিং মধ্যে কিছু অন্তর্দৃষ্টি প্রদান করবে।

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

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

আমরা কি তাদের দেখতে পারি?

হালনাগাদ

দেখে মনে হচ্ছে Agrep () এগুলির বেশিরভাগের জন্য কৌশলটি করবে। দ্রষ্টব্য যে Agrep () হ'ল লেভেনস্টেইন দূরত্বের কেবল আর এর প্রয়োগ।

agrep(vec55[1],vec91,value=T)

যদিও কিছু গণনা করে না, আমি এখনও নিশ্চিত নই যে ফেরোপ্লাজম এসিডারামাস ফেরোগ্লোবাস প্লাসিডাস ডিএসএম 10642 এর মতো, উদাহরণস্বরূপ:

agrep(vec55[7],vec91,value=T) 

আমি মনে করি আপনি এর মধ্যে কিছুগুলির জন্য আপনি কিছুটা SOL হতে পারেন এবং সম্ভবত স্ক্র্যাচ থেকে একটি সূচক তৈরি করা সবচেয়ে ভাল বাজি। অর্থাত ,. ভিস 55 এর জন্য আইডি নম্বর সহ একটি সারণী তৈরি করুন এবং তারপরে ভ্যাক91-এ আইডি'র ভ্যাক 55-এ একটি ম্যানুয়ালি তৈরি করুন। যন্ত্রণাদায়ক, আমি জানি, তবে এগ্রিপ () দিয়ে অনেক কিছু করা যায়।


হাই ব্র্যান্ডন - আমি ডেটার একটি নমুনা যুক্ত করেছি। ধন্যবাদ!
তাল গালিলি

হাই ব্র্যান্ডন - আপনার সমাধানটি দুর্দান্ত কাজ করেছে - আপনাকে ধন্যবাদ।
তাল গ্যালি

এসই তে বিষয়ের পূর্ববর্তী প্রশ্নের লিঙ্কের জন্য +1 (পয়েন্টারটিকে অগ্রভাগের জন্য ধন্যবাদ) ()।
ব্যবহারকারী 60

15

দুটি স্ট্রিংয়ের মধ্যে দূরত্ব পরিমাপ করার অনেকগুলি উপায় রয়েছে। আরে ব্যাপকভাবে প্রয়োগ করা দুটি গুরুত্বপূর্ণ (মানক) পন্থা হলেন লেভেনস্টাইন এবং হামিং দূরত্ব। পূর্বেরটি প্যাকেজ 'মিসপাইকো' এবং 'ই 1071' এর পরে পাওয়া যায়। এগুলি ব্যবহার করে, আমি কেবল জোড় জোড়ের দূরত্বে ৫২ বাই ৫ 55 ম্যাট্রিক্স গণনা করব, তারপরে সেখান থেকে এগিয়ে যাব (উদাহরণস্বরূপ তালিকার "1" এর জন্য সেরা প্রার্থী ম্যাচটি তালিকা 2 থেকে স্ট্রিংয়ের সাথে "x" স্ট্রিং "ক্ষুদ্রতম দূরত্ব") ")।

বিকল্পভাবে, প্যাকেজ রেকর্ডলিঙ্কেজে একটি ফাংশন তুলনা করা হয় (যা) আপনি যা চান তা করার জন্য ডিজাইন করা হয়েছে বলে মনে হয় এবং তথাকথিত জারো-উইঙ্কলারের দূরত্ব ব্যবহার করে যা হাতের কাজটির জন্য আরও উপযুক্ত বলে মনে হয়, তবে এর সাথে আমার কোনও অভিজ্ঞতা ছিল না ।

সম্পাদনা: আমি ভেরি 55 এর প্রথম এন্ট্রি " অ্যারোপিরাম পেরিনিক্স " এর সাথে একটি মিল খুঁজে পেতে ব্র্যান্ডনের মন্তব্যের পাশাপাশি তালের কোড অন্তর্ভুক্ত করার জন্য আমার উত্তরটি সম্পাদনা করছি :

agrep(vec55[1],vec91,ignore.case=T,value=T,max.distance = 0.1, useBytes = FALSE)
[1] "Aeropyrum pernix K1"

8
+1 টি। এছাড়াও, ক্ষেত্রে এটি সহায়ক শব্দটি google যখন স্ট্রিং তুলনা হয় "সম্পাদনা দূরত্ব": en.wikipedia.org/wiki/Edit_distance
Ars

@ পিয়ার্স:> ধন্যবাদ, এটি একটি আর অনুসন্ধান ইঞ্জিনকে খাওয়ানোর জন্য এবং কী বেরিয়ে আসে তা দেখার জন্য একটি কার্যকর তালিকা!
ব্যবহারকারী 60

2
লেভেনস্টেইন সম্পাদনা দূরত্ব অগ্রগতি () এর মাধ্যমে বেস প্যাকেজের অংশ হিসাবে প্রয়োগ করা হয়েছে
ব্র্যান্ডন বার্টেলসেন

দুর্দান্ত উত্তর কোয়াক - ভবিষ্যতে আমার এটির একটি নজর থাকবে!
তাল গ্যালি

ব্যক্তিগতভাবে, আমি অনুভব করি যে এটি তালের প্রশ্নের আরও সম্পূর্ণ উত্তর। আমাদের রেকর্ডলিঙ্কেজ নির্দেশ করার জন্য +1 - আমাকে অবশ্যই এটি চেষ্টা করে দেখতে হবে।
ব্র্যান্ডন বার্টেলসেন

7

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

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


3

আমি আপনাকে এন-গ্রাম এবং ডামেরাউ-লেভেনস্টেইন দূরত্বের পাশাপাশি কোয়াকের অন্যান্য পরামর্শও পরীক্ষা করে দেখতে চাই suggest

এই কাগজটি এখানে উল্লিখিত কয়েকটি পৃথক সম্পাদনার দূরত্বের নির্ভুলতার সাথে তুলনা করে (এবং গুগল পণ্ডিতের মতে এটি উদ্ধৃত হয়)।

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

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

প্যাকেজ হিসাবে আমি যতদূর সাহায্য করতে পারি না, তবে এন-গ্রাম ধারণাটি খুব সহজ (আমি সম্প্রতি এন-গ্রাম করার জন্য একটি এসপিএস ম্যাক্রো তৈরি করেছি, তবে এই জাতীয় প্রকল্পের জন্য আমি ইতিমধ্যে তৈরি প্যাকেজগুলির সাথেই যাব অন্য পোস্টাররা পরামর্শ দিয়েছে)। পাইথনে লেভেনস্টাইন দূরত্ব গণনার উদাহরণ এখানে


থ্যাঙ্কস অ্যান্ডি - ভবিষ্যতে আমি এটির একটি নজর রাখব।
তাল গ্যালি

1

আমি এই সমস্যাটি সমাধান করার জন্য কয়েকটি প্যাকেজ এবং উপায়গুলি নিয়ে গবেষণা করেছি এবং আমি মনে করি সেরা প্রার্থী fuzzywuzzyRপ্যাকেজ is

FuzzywuzzyR প্যাকেজটি fuzzywuzzy পাইথন প্যাকেজটির একটি ঝাপসা স্ট্রিংয়ের সাথে মিল রয়েছে imple ক্রমগুলির মধ্যে পার্থক্য গণনা করতে এটি লেভেনস্টাইন দূরত্ব ব্যবহার করে। FuzzywuzzyR এর কার্যকারিতা সম্পর্কে আরও বিশদ ব্লগ-পোস্টে এবং প্যাকেজ ভিগনেটে পাওয়া যাবে ।

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

  • উইন্ডোজ 10 এসডিকে 10.0.17763.0 এবং এমএসভিসি ভি140
  • ভিএস 2015 সি ++ বিল্ড সরঞ্জাম (v 14v00)

সমাধান সহজ। প্রধান ফাংশন ExtractOneদুটি মানের তালিকা প্রদান করে। প্রথমটি হ'ল একটি স্ট্রিং ম্যাচ এবং দ্বিতীয়টি হ'ল সংশ্লিষ্ট স্কোর (0 - 100 এর মধ্যে)। fuzzywuzzyRপ্যাকেজ অন্যান্য ফাংশন যা উপযোগী হতে পারে প্রদান করে। প্রধান ডকুমেন্টেশন এখানে পাওয়া যাবে । আমি আশা করি এই কোডটি সমস্যার সমাধানে সহায়তা করবে।

library(fuzzywuzzyR)

# The Fuzzy initialization
init_proc = FuzzUtils$new()
PROC = init_proc$Full_process # class process-method
PROC1 = tolower # base R function
init_scor = FuzzMatcher$new()
SCOR = init_scor$WRATIO    
init <- FuzzExtract$new()

match_strings <- function(vector_to_process, base_vector){  
  new_vec = c()
  for(i in 1:length(vector_to_process)){      
    new_word <- init$ExtractOne(string = vector_to_process[i], sequence_strings = base_vector, processor = PROC1, scorer = SCOR, score_cutoff = 0L)
    new_vec[i] <- new_word[[1]]
  }     
  return(new_vec)
}

# Check if all python modules are available
if (check_availability()){    
  new_vec <- match_strings(vec55, vec91)
  print(new_vec)   
}

আউটপুট:

[1] "Aeropyrum pernix K1"                                 "Archaeoglobus fulgidus DSM 4304"                    
[3] "Candidatus Korarchaeum cryptofilum OPF8"             "Candidatus Methanoregula boonei 6A8"                
[5] "Cenarchaeum symbiosum A"                             "Desulfurococcus kamchatkensis 1221n"                
[7] "Thermoplasma volcanium GSS1"                         "Haloarcula marismortui ATCC 43049"                  
[9] "Halobacterium sp. NRC-1"                             "Halobacterium salinarum R1"                         
[11] "Haloferax volcanii DS2"                              "Haloquadratum walsbyi DSM 16790"                    
[13] "Hyperthermus butylicus DSM 5456"                     "Ignicoccus hospitalis KIN4/I"                       
[15] "Metallosphaera sedula DSM 5348"                      "Methanothermobacter thermautotrophicus str. Delta H"
[17] "Methanobrevibacter smithii ATCC 35061"               "Methanococcoides burtonii DSM 6242"       

0

ফাংশন উপর ভিত্তি করে adist

চরিত্রের ভেক্টরগুলির মধ্যে আনুমানিক স্ট্রিংয়ের দূরত্ব গণনা করুন। দূরত্বটি একটি সাধারণীকরণ করা লেভেনস্টেইন (সম্পাদনা) দূরত্ব যা একটি স্ট্রিংকে অন্য স্ট্রিংয়ে রূপান্তর করার জন্য প্রয়োজনীয় ন্যূনতম সম্ভাব্য সন্নিবেশ, মুছে ফেলা এবং বিকল্পগুলি দেয়

stringdistএকই নামের প্যাকেজ থেকে ফাংশনটিতে বিভিন্ন পদ্ধতি রয়েছে (দেখুন ?stringdist):

পদ্ধতি = সি ("ওসা", "এলভি", "ডিএল", "হামিং", "এলসিএস", "কিউগ্রাম", "কোসাইন", "জ্যাকার্ড", "জে ডাব্লু", "সাউন্ডেক্স")

এটির সাহায্যে আপনি সর্বাধিক বিচ্যুতি (প্রান্তিকতা) নির্বাচন করতে পারেন:

firstvector<-vec55
secondvector<-vec91

match<-character()
threshold<-14 # max 14 characters of divergence
mindist<-integer()
sortedmatches<-character()

for (i in 1:length(firstvector) ) {
  matchdist<-adist(firstvector[i],secondvector)[1,]
  # matchdist<-stringdist(firstvector[i],secondvector) # several methods available

  matchdist<-ifelse(matchdist>threshold,NA,matchdist)
  sortedmatches[i]<-paste(secondvector[order(matchdist, na.last=NA)], collapse = ", ")
  mindist[i]<- tryCatch(ifelse(is.integer(which.min(matchdist)),matchdist[which.min(matchdist)],NA), error = function(e){NA})
  match[i]<-ifelse(length(secondvector[which.min(matchdist)])==0,NA,
                  secondvector[which.min(matchdist)] )
}
res<-data.frame(firstvector=firstvector,match=match,divergence=mindist, sortedmatches=sortedmatches, stringsAsFactors = F)
res

এই ডেটাফ্রেমে কলাম ফার্স্টভেક્ટરে প্রথম ভেক্টর, কলামের ম্যাচে সেকেন্ডভেটারের সেরাতম স্তর, কলামের বিভক্তির দূরত্ব এবং ওপির মতো কলামের ক্রমবিন্যাসে অর্ডারযুক্ত সমস্ত উল্লেখযোগ্য মিল রয়েছে shows


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