আর [বন্ধ] এর নাম অনুসারে কলাম সূচকটি সন্ধান করা হচ্ছে


11

একটি ডেটা ফ্রেমে, আমি নামটি দিয়ে কলামের সূচি পেতে চাই। উদাহরণ স্বরূপ:

x <- data.frame(foo=c('a','b','c'),bar=c(4,5,6),quux=c(4,5,6))

আমি "বার" এর কলাম সূচকটি জানতে চাই।

আমি নিম্নলিখিতটি নিয়ে এসেছি তবে এটি অনুপযুক্ত বলে মনে হচ্ছে। আমি অনুপস্থিত যে আরও সহজ সরল অন্তর্নির্মিত আছে?

seq(1,length(names(x)))[names(x) == "bar"]
[1] 2

3
match("bar",names(x))matchপ্রথম তর্কটিও যদি ভেক্টর হয় তবে এটি আরও কার্যকর হয়।
কার্ডিনাল

আপনার কি আসলে কলামের সূচি দরকার? সাধারণ কলাম $ বারের মতো পুরো কলামটি পেতে আপনি x [, "বার"] ব্যবহার করতে পারেন । এবং উভয় ক্ষেত্রেই, সারিগুলি সাবস্ক্রিপ্ট করুন: x [2: 3, "বার"] বা x $ বার [2: 3]। আপনার যদি সূচকে এমন একটি রুটিনে খাওয়ানো প্রয়োজন যার জন্য একটি সূচক প্রয়োজন, অবশ্যই এটি সহায়ক নয়।
ওয়েন

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

3
এই প্রশ্নটি অফ-টপিক হিসাবে উপস্থিত বলে মনে হচ্ছে কারণ এটি কীভাবে আর তে কিছু করা যায় এবং কোনও সম্পর্কিত পরিসংখ্যানগত সমস্যা সম্পর্কে নয়।
গুং - মনিকা পুনরায়

উত্তর:


22

সম্ভবত এটি সহজতম উপায়:

which(names(x)=="bar")

11

কেবলমাত্র অন্য সম্ভাবনা যুক্ত
করতে : আপনি সাধারণত ব্যবহার করতে পারেন grepএবং নিয়মিত এক্সপ্রেশন ব্যবহার করে আরও পরিশীলিত পদ্ধতিতে এই ধরণের কাজগুলি করা (যেমন, গ্রেপল)।

আপনার উদাহরণে আপনি কলাম সূচীর সাথে এটি পেতে পারেন:

grep("^bar$", colnames(x)) অথবা grep("^bar$", names(x))

^এবং $শুরুতে এবং একটি স্ট্রিং এর শেষে এর মেটা অক্ষর, যথাক্রমে।

আরও ইনফোসের জন্য "গ্রেপ এবং বিশেষত" রেজেক্স চেক করুন (যেমন, আপনি কেবল আংশিক নাম / মিলগুলি ধরতে পারেন, বা ফেরতের মানটি স্ট্রিং নিজেই বা যৌক্তিক ভেক্টর, ...)

আমার জন্য, grepআরও আর-ইশ।

হ্যাডলি উইকহেমের সাম্প্রতিক প্যাকেজটি দৃ related ়রূপে সম্পর্কিত: স্ট্রিংর , "আধুনিক, ধারাবাহিক স্ট্রিং প্রসেসিং" এর জন্য প্যাকেজ যেমন গ্রেপ ফাংশন সহ। তিনি সম্প্রতি আর জার্নালে এটি নিয়ে একটি প্রবন্ধ প্রকাশ করেছিলেন।

অভিন্ন ইস্যুতে স্ট্যাকওভারফ্লোতে আমার উত্তরও দেখুন।

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