আর-এ মুদ্রিত আউটপুটে দশমিক সংখ্যার নিয়ন্ত্রণ করে


110

ডিজিটের ডিসপ্লেতে নিয়ন্ত্রণ পেতে আরে একটি বিকল্প রয়েছে। উদাহরণ স্বরূপ:

options(digits=10)

আর সেশন শেষে 10 অঙ্কে গণনার ফলাফল দেওয়ার কথা। আর-এর সহায়তা ফাইলে, অঙ্কগুলির পরামিতিগুলির সংজ্ঞা নিম্নরূপ:

অঙ্কগুলি: সংখ্যার মান প্রিন্ট করার সময় মুদ্রণের জন্য সংখ্যাগুলির সংখ্যা নিয়ন্ত্রণ করে। এটি শুধুমাত্র একটি পরামর্শ। বৈধ মানগুলি ডিফল্ট 7 সহ 1 ... 22 হয়

সুতরাং, এটি বলেছে এটি কেবল একটি পরামর্শ। যদি আমি সর্বদা 10 ডিজিট প্রদর্শন করতে চাই তবে কম বেশি না?

আমার দ্বিতীয় প্রশ্নটি হল, আমি যদি 22 টিরও বেশি সংখ্যার প্রদর্শন করতে চাই, অর্থাৎ 100 অঙ্কের মতো আরও সুনির্দিষ্ট গণনার জন্য? বেস বেস দিয়ে এটি কি সম্ভব, বা এর জন্য আমার কি অতিরিক্ত প্যাকেজ / ফাংশন প্রয়োজন?

সম্পাদনা: জেএময়ের পরামর্শের জন্য ধন্যবাদ, আমি চেষ্টা করেছি sprintf("%.100f",pi)এবং এটি দিয়েছি

[1] "3.1415926535897931159979634685441851615905761718750000000000000000000000000000000000000000000000000000"

যার ৪৮ দশমিক। এটি কি সর্বোচ্চ সীমাটি পরিচালনা করতে পারে?


5
পাই এর প্রথম 15 টি সংখ্যা সঠিক। সত্যিকারের মূল্য joyofpi.com/pi.html এর সাথে
রিচি কটন

1
তুমি ঠিক বলছো. আর এর চেয়ে আলাদা কেন?
মেহপার সি। পালভুজলার


2
Mehper: আমার মনে হয় যে আপনার আর আপনি সংখ্যার গণনীয় উপস্থাপনা অপব্যাখ্যা করছেন পড়তে চাইবেন en.wikipedia.org/wiki/Floating_point
শেন

তুলনা হিসাবে পাইথন ঠিক একই কাজ করে: চেষ্টা করে python -c "import math; print(format(math.pi, '.100f'))"। ফলাফলটি pi48 "আসল" দশমিকের সাথে থাকে, বাকি 52 অঙ্কগুলির জন্য শূন্যগুলি দ্বারা স্টাফ।
সিনট্যাক্সারর

উত্তর:


49

এটি কেবলমাত্র একটি পরামর্শ হওয়ার কারণটি হ'ল আপনি সহজেই একটি মুদ্রণ ফাংশন লিখতে পারেন যা বিকল্পগুলির মানটিকে উপেক্ষা করে। অন্তর্নির্মিত মুদ্রণ এবং ফর্ম্যাটিং ফাংশনগুলি optionsডিফল্ট হিসাবে মানটি ব্যবহার করে ।

দ্বিতীয় প্রশ্নের হিসাবে, যেহেতু আরআর সীমাবদ্ধ নির্ভুল গণিত ব্যবহার করে, আপনার উত্তরগুলি 15 বা 16 দশমিক জায়গার বাইরে সঠিক নয়, সুতরাং সাধারণভাবে আরও কিছু প্রয়োজন হয় না। GMP এবং rcdd প্যাকেজ একাধিক স্পষ্টতা গাণিতিক (GMP লাইব্রেরিতে একটি interace মাধ্যমে) সাথে মোকাবিলা, কিন্তু এই বেশিরভাগই বরং আপনার ডাবলস জন্য আরো দশমিক স্থান চেয়ে বড় পূর্ণসংখ্যার সাথে সম্পর্কিত হয়।

ম্যাথমেটিকা বা ম্যাপেল আপনাকে যত বেশি দশমিক স্থান দেবে তা আপনার হৃদয়কে দেয়।

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

অন্যদিকে, যদি আপনি কেবল খুব অল্প সংখ্যক নিয়ে কাজ করছেন, তবে এটি কোনও সমস্যা কম কারণ যেহেতু আর সংখ্যাকে হ্যান্ডেল করতে পারে .Machine$double.xmin(সাধারণত 2e-308)।

এই দুটি বিশ্লেষণের তুলনা করুন।

x1 <- rnorm(50, 1, 1e-15)
y1 <- rnorm(50, 1 + 1e-15, 1e-15)
t.test(x1, y1)  #Should throw an error

x2 <- rnorm(50, 0, 1e-15)
y2 <- rnorm(50, 1e-15, 1e-15)
t.test(x2, y2)  #ok

প্রথম ক্ষেত্রে, সংখ্যার মধ্যে পার্থক্য কেবল বহু তাৎপর্যপূর্ণ পরিসংখ্যানের পরে ঘটে, সুতরাং ডেটা "প্রায় ধ্রুবক"। দ্বিতীয় ক্ষেত্রে, যদিও সংখ্যার মধ্যে পার্থক্যগুলির আকার একই, তবে তারা সংখ্যার বিশালতার তুলনায় তারা বড়।


E3bo দ্বারা উল্লিখিত হিসাবে, আপনি প্যাকেজটি ব্যবহার করে একাধিক-নির্ভুলতা ভাসমান পয়েন্ট নম্বরগুলি ব্যবহার করতে পারেন Rmpfr

mpfr("3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825")

এগুলি নিয়মিত (ডাবল নির্ভুলতা) numericভেক্টরগুলির তুলনায় ধীর এবং আরও মেমরি নিবিড় , তবে আপনার যদি খুব খারাপ শর্তযুক্ত সমস্যা বা অস্থির অ্যালগরিদম থাকে তবে এটি কার্যকর হতে পারে।


4
এই রুইকি পৃষ্ঠাটি যেমন দেখায়, আরএমপিএফআর প্যাকেজটি আর-এ উচ্চ নির্ভুলতা ভাসমান পয়েন্ট গণিতের অনুমতি দেয়
e3bo

তবে আরএমপিএফআরটি কি কোনও আর প্যাকেজ ব্যবহার করে এর যথার্থতা উন্নত করতে পারে? অথবা এটি কেবলমাত্র এতে অভ্যন্তরীণভাবে কোডড ফাংশনগুলি ব্যবহার করতে পারে?
স্ক্যান 2

2
আমি কেবল এটাই ভাবছিলাম, "আপনি যদি পরিসংখ্যান পরীক্ষা করেন যা 15 তম উল্লেখযোগ্য চিত্রের বাইরে পার্থক্যের উপর নির্ভর করে, তবে আপনার বিশ্লেষণটি অবশ্যই জঞ্জাল।" তবে আমি ভাবলাম যে অঙ্কের সংখ্যাটি কীভাবে আমি এর জঞ্জাল উপস্থাপন করব এবং আমি ভাবলাম 5, তবে আমি সংশোধন করতে পেরে খুশি হব।
প্যাট্রিকটি 25'15

46

আপনি যদি পুরো আউটপুট নিজেই উত্পাদন করে থাকেন তবে আপনি sprintf()যেমন ব্যবহার করতে পারেন

> sprintf("%.10f",0.25)
[1] "0.2500000000"

নির্দিষ্ট করে যে আপনার দশ দশমিক পয়েন্ট সঙ্গে একটি ফ্লোটিং পয়েন্ট সংখ্যা ফরম্যাট করতে (চাই ভাসা এবং জন্য নির্দিষ্ট করে দশ দশমিক পয়েন্ট)।%.10ff.10

আর এর উচ্চতর স্তরের ক্রিয়াকলাপকে অঙ্কের সঠিক সংখ্যা মুদ্রণ করতে বাধ্য করার কোনও উপায় আমি জানি না।

আপনি যদি আর এর স্বাভাবিক সংখ্যাগুলি মুদ্রণ করেন তবে ১০০ সংখ্যা প্রদর্শন করা কোনও অর্থবোধ করে না, যেহেতু 64৪-বিট ডাবলস ব্যবহারের মাধ্যমে আপনি যে সর্বোত্তম নির্ভুলতাটি পেতে পারেন এটি প্রায় 16 দশমিক অঙ্ক (আপনার সিস্টেমে ম্যাচিন $ ডাবল ডেস্ক দেখুন)। বাকি সংখ্যাগুলি কেবল জাঙ্ক হবে।


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

14
পাই এর দশমিক সংখ্যা অসীম; এর অর্থ এই নয় যে কোনও কম্পিউটার সেগুলি সঞ্চয় করতে পারে।
শেন

আমি এই একটি দৃশ্যকল্প যেখানে ম্যাথামেটিকাল আর উচ্চতর হয়
skan

1
@ সাকান আপনি কী ভাবেন গণিতের অসীম সংখ্যার দশমিক সংখ্যা রয়েছে?
গ্রেগর থমাস

@ গ্রেগর অবশ্যই নয়, তবে আপনার স্মৃতি যতটুকু আপনাকে দেয় তত বেশি অঙ্ক আপনি করতে পারেন।
স্ক্যান

1

প্রয়োজনের ভিত্তিতে কত দশমিক অঙ্ক মুদ্রণ করতে হবে তা নিয়ন্ত্রণ করতে সক্ষম আরও একটি সমাধান (আপনি যদি অপ্রয়োজনীয় শূন্য (গুলি) মুদ্রণ করতে না চান)

উদাহরণস্বরূপ, যদি আপনার কাছে কোনও ভেক্টর থাকে elementsএবং sumএটি পেতে চান

elements <- c(-1e-05, -2e-04, -3e-03, -4e-02, -5e-01, -6e+00, -7e+01, -8e+02)
sum(elements)
## -876.5432

স্পষ্টতই, সর্বশেষ ডিজিটাল হিসাবে 1কাটা হয়েছে, আদর্শ ফলাফলটি হওয়া উচিত -876.54321, তবে স্থির মুদ্রণ দশমিক বিকল্প হিসাবে সেট করা থাকলে sprintf("%.10f", sum(elements)), উদার শূন্য (গুলি) হিসাবে উত্পন্ন হয়-876.5432100000

টিউটোরিয়ালটি এখানে অনুসরণ করুন: দশমিক সংখ্যা মুদ্রণ , নির্দিষ্ট সংখ্যার মধ্যে কতগুলি দশমিক অঙ্কগুলি সনাক্ত করতে সক্ষম হন, এখানে এখানে যেমন -876.543215 টি দশমিক অঙ্ক প্রিন্ট করা দরকার, তারপরে আমরা formatনীচের মত ফাংশনটির জন্য একটি পরামিতি সেট করতে পারি :

decimal_length <- 5
formatC(sum(elements), format = "f", digits = decimal_length)
## -876.54321

আমরা decimal_lengthপ্রতিটি সময়ের ক্যোয়ারির ভিত্তিতে পরিবর্তন করতে পারি , তাই এটি বিভিন্ন দশমিক মুদ্রণের প্রয়োজনীয়তা পূরণ করতে পারে।

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