তাত্পর্যপূর্ণ স্বরলিপি ব্যবহার না করার জন্য জোর করা (যেমন ই + 10)?


228

আমি কি আর-কে পছন্দ e+10মতো স্বরলিপি ব্যবহারের পরিবর্তে নিয়মিত নম্বরগুলি ব্যবহার করতে বাধ্য করতে পারি ? আমার আছে:

1.810032e+09
# and 
4

একই ভেক্টর মধ্যে এবং দেখতে চান:

1810032000
# and
4

আমি একটি পুরানো ফ্যাশন প্রোগ্রামের জন্য আউটপুট তৈরি করছি এবং আমি একটি টেক্সট ফাইল ব্যবহার করে লিখতে হবে cat। এটি এতদূর ভাল কাজ করে তবে আমি e+10সেখানে স্বরলিপিটি ব্যবহার করতে পারি না ।


উত্তর:


228

এটি কিছুটা ধূসর অঞ্চল। আপনাকে স্মরণ করতে হবে যে আর সর্বদা একটি মুদ্রণ পদ্ধতি শুরু করবে এবং এই মুদ্রণ পদ্ধতিগুলি কিছু বিকল্প শুনবে। 'স্কিপেন' সহ - বৈজ্ঞানিক প্রদর্শনের জন্য একটি জরিমানা। থেকে help(options):

'স্কিপেন': পূর্ণসংখ্যা। স্থির বা তাত্ক্ষণিক স্বরলিপিতে সংখ্যাসূচক মানগুলি মুদ্রণের সিদ্ধান্ত নেওয়ার সময় একটি জরিমানা প্রয়োগ করা উচিত। ধনাত্মক মানগুলি বৈজ্ঞানিক স্বরলিখনের প্রতি স্থির এবং নেতিবাচক দিকে পক্ষপাতদু: স্থির স্বীকৃতি অগ্রাধিকার পাবে যদি না এটি 'স্কিপেন' অঙ্কগুলির চেয়ে বেশি হয়।

উদাহরণ:

R> ran2 <- c(1.810032e+09, 4) 
R> options("scipen"=-100, "digits"=4)
R> ran2
[1] 1.81e+09 4.00e+00
R> options("scipen"=100, "digits"=4)
R> ran2
[1] 1810032000          4

এটি বলেছিল, আমি এখনও এটি অদ্ভুত বলে মনে করি। সবচেয়ে সরাসরি উপায় ব্যবহার করা sprintf()স্পষ্ট প্রস্থ যেমন সঙ্গে sprintf("%.5f", ran2)


1
ধন্যবাদ। scipen মনে হচ্ছে যে বিকল্পটি আমি খুঁজছিলাম be ভুতুড়ে জরিমানার ব্যাখ্যা আমাকে লাজুক করে তুলেছিল। তবে আপনার উদাহরণটি সুন্দরভাবে ব্যাখ্যা করেছে। স্প্রিন্টফ, হাহ? আপনি কি এক সপ্তাহ আগে স্প্রিন্টফের সাথে ঝামেলাগুলি উল্লেখ করছেন? :)
ম্যাট ব্যানার

4
স্ট্রুডিয়োতে, আপনি যদি কোনও ডেটাसेट আমদানি করেন এবং ট্রেন_সাম্পল_10 কে = ফর্ম্যাট (ট্রেন_সাম্পল_10 কে, বৈজ্ঞানিক = মিথ্যা) এবং পুনরায় লোড করেন তবে এটি বৈজ্ঞানিক স্বরলিপি পরিবর্তন করবে।
মিশ্রদেব

এটি করার পরে আমি কীভাবে জিনিসগুলিকে স্বাভাবিক অবস্থায় ফিরিয়ে দেব?
এআইএম_বিএলবি

6
@ সিএসএ: options("scipen"=0, "digits"=7)(সেগুলি ডিফল্ট মান)
স্কারাবি

আপনার ফলাফলটি options("scipen"=100, "digits"=4)কোডের শীর্ষে নিয়ে যাওয়া উচিত এবং উপযুক্ত নোট সহ এটির নীচে নেই ... এটি এমন কোনও ব্যক্তির পক্ষে বিভ্রান্তিকর হতে পারে যিনি দ্রুত সমাধান খুঁজছেন (এবং গুগল প্রথমটিকে ফলাফল হিসাবে দেখায়)।
এক্সবিএসডি

152

আর-তে বৈজ্ঞানিক স্বরলিপি অক্ষম করে এটি অর্জন করা যেতে পারে

options(scipen = 999)

4
তদ্ব্যতীত , এটি আপনার .R প্রোফাইলে ফাইলের মধ্যে রাখা যেতে পারে যাতে এটি ডিফল্টরূপে স্বয়ংক্রিয়ভাবে কার্যকর হয়।
স্মি

74

আমার প্রিয় উত্তর:

format(1810032000, scientific = FALSE)
# [1] "1810032000"

এটি আর সেটিংসে বিড়বিড় না করে আপনি যা চান তা দেয়।

নোট করুন এটি একটি সংখ্যা অবজেক্টের চেয়ে একটি অক্ষরের স্ট্রিং প্রদান করে


1
এইচএম এটি আজব, এটি আমার পক্ষে কাজ করে না। আমি কোনও ত্রুটি পাই না, এটি এখনও বৈজ্ঞানিক স্বরলিপি মুদ্রণ করে।
ওভি

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

10
সম্ভবত লক্ষণীয় যে এটি সংখ্যার পরিবর্তে একটি চরিত্র তৈরি করে।
চেঞ্জেল

3
যদি আপনার ভেক্টরের সংখ্যাগুলি দৈর্ঘ্যগুলি পৃথক করে তবে অবশ্যই তা নিশ্চিত করে নিন justified = "none"বা অন্যথায় একই দৈর্ঘ্যে স্পেসিং করার স্থান রয়েছে।
লরেন ফিচ

1
format(1e6, scientific=FALSE)প্রত্যাবর্তনের "1000000"সময় as.character(1e6)ফিরে আসে "1e+06", সুতরাং দুটি পদ্ধতির মধ্যে পার্থক্য রয়েছে।
মিকি 18

7

options(scipen = 999) আপনার .R প্রোফাইলে ফাইলটি রাখুন যাতে এটি ডিফল্টরূপে স্বয়ংক্রিয়ভাবে কার্যকর হয় । (এটি ম্যানুয়ালি করার উপর নির্ভর করবেন না))

(এটি অন্যান্য উত্তরের সাথে আলাদা কিছু বলছে: কীভাবে?

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

ঠিক একই উত্তর কেন? stackoverflow.com/a/27318351/680068 ছাড়াও Rprofile থেকে বিট, হয়তো ভালো সম্পাদনার GingerJack এর উত্তর?
zx8754

@ জেডএক্স ৮75৫৪: এটি ঠিক একই উত্তর নয়: গুরুত্বপূর্ণ বিষয়টি আপনার স্টাফটিকে আপনার .R প্রোফাইলে স্থানান্তরিত করা। তাহলে আপনি এটি কখনই ভুলতে পারবেন না। এছাড়াও সময় হিসাবে আপনার .আর প্রোফাইলটি আপনার সমস্ত কাস্টমাইজেশন জমা করে।
স্মি

1
আপনার পক্ষে অবশ্যই, তবে প্রশ্নটি "এক্স করতে আমি কীভাবে ভুলতে পারি না" তবে "কীভাবে এক্স করতে পারি" তা নয়।
zx8754

@ জেডএক্স ৮75৫৪: আমি প্রতিদিন একাধিক প্রকল্পে আর এবং পাইথন / পান্ডার মধ্যে বিভক্ত হয়েছি। উভয়ের কাস্টমাইজেশন, প্যাকেজ পাথ ইত্যাদি রয়েছে It এটি জিনিসগুলিকে একটি সাধারণ কনফিগার ফাইল সংরক্ষণ করে রাখার জন্য সত্যই বুদ্ধিমান করে। প্রকল্পগুলি জুড়ে।
স্মি

1
@ জেডএক্স ৮75৫৪: আপনি যখন একাধিক ভাষায় একাধিক প্রকল্পে কাজ করছেন, তখন "আমি কীভাবে এক্স করতে পারি" প্রশ্নটি "একটি এক্সকে কীভাবে ভুলতে পারি না" এর সাথে একত্রীকরণযোগ্য, সামঞ্জস্যপূর্ণ, স্বয়ংক্রিয় উপায়ে মিশে যায় question আমি আরও ব্যাখ্যা যোগ করেছি। যার জন্য ড্রাইভ বাই ডাউনভোটার সে।
স্মি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.