আপনি যদি কেবলমাত্র 10 এর নিকটতম শক্তিটি পেতে চান তবে কেবল সংজ্ঞা দিন:
roundUp <- function(x) 10^ceiling(log10(x))
এক্স আসলে ভেক্টর হলে এটিও কার্যকরভাবে কাজ করে:
> roundUp(c(0.0023, 3.99, 10, 1003))
[1] 1e-02 1e+01 1e+01 1e+04
.. তবে আপনি যদি কোনও "সুন্দর" সংখ্যায় গোল করতে চান, আপনাকে প্রথমে একটি "সুন্দর" সংখ্যাটি নির্ধারণ করতে হবে। নিম্নলিখিতটি আমাদের 1 থেকে 10 পর্যন্ত দুর্দান্ত বেস মান সহ ভেক্টর হিসাবে "দুর্দান্ত" সংজ্ঞা দিতে দেয় The
roundUpNice <- function(x, nice=c(1,2,4,5,6,8,10)) {
if(length(x) != 1) stop("'x' must be of length 1")
10^floor(log10(x)) * nice[[which(x <= 10^floor(log10(x)) * nice)[[1]]]]
}
এক্স ভেক্টর হলে উপরেরটি কাজ করে না - এখন সন্ধ্যা খুব দেরিতে :)
> roundUpNice(0.0322)
[1] 0.04
> roundUpNice(3.22)
[1] 4
> roundUpNice(32.2)
[1] 40
> roundUpNice(42.2)
[1] 50
> roundUpNice(422.2)
[1] 500
[[সম্পাদনা]]
যদি প্রশ্নটি নির্ধারিত নিকটতম মানের (10 বা 100 এর মতো) গোল করে কীভাবে হয় তবে জেমসের উত্তরটি সবচেয়ে উপযুক্ত বলে মনে হয়। আমার সংস্করণ আপনাকে যে কোনও মান নিতে এবং স্বয়ংক্রিয়ভাবে এটিকে যুক্তিসঙ্গতভাবে "সুন্দর" মান হিসাবে গোল করতে দেয়। উপরের "দুর্দান্ত" ভেক্টরের আরও কয়েকটি ভাল পছন্দগুলি হ'ল:1:10, c(1,5,10), seq(1, 10, 0.1)
যদি আপনার প্লটে আপনার মানগুলির একটি ব্যাপ্তি থাকে, উদাহরণস্বরূপ [3996.225, 40001.893]
তবে স্বয়ংক্রিয় পদ্ধতিতে পরিসরের আকার এবং সংখ্যার বিশালতা উভয়ই বিবেচনায় নেওয়া উচিত। এবং হ্যাডলি দ্বারা উল্লিখিত হিসাবে , pretty()
ফাংশনটি আপনি চান তা হতে পারে।