linMap <- function(x, from, to)
(x - min(x))/max(x - min(x)) * (to - from) + from
linMap(vec, 12, 102)
# [1] 12 22 92 102
या अधिक स्पष्ट रूप से:
linMap <- function(x, from, to) {
# Shifting the vector so that min(x) == 0
x <- x - min(x)
# Scaling to the range of [0, 1]
x <- x/max(x)
# Scaling to the needed amplitude
x <- x * (to - from)
# Shifting to the needed level
x + from
}
rescale(vec, c(12, 102))
पैकेज scales
का उपयोग कर काम करता है। इसके अलावा एक एक चतुर रास्ते में approxfun
का फायदा उठाने सकता है के रूप में @flodel ने सुझाव दिया:
linMap <- function(x, a, b) approxfun(range(x), c(a, b))(x)
आप अपने मानचित्रण व्याख्या कर सकते हैं? मुझे समझ में नहीं आता कि क्यों 2 को 62 तक मैप किया गया है या क्यों 270 आपकी सीमा के बाहर गिरने के बाद से है। – David
क्षमा करें @ डेविड, मैंने दो उदाहरणों को मिश्रित किया जो मैं समस्या को समझने के लिए उपयोग कर रहा था। यह मूल रूप से एक रैखिक मैपिंग है। – nachocab
यह स्पष्ट होना चाहिए, लेकिन यह एक 'आर' सवाल नहीं है। यह मूल रैखिक बीजगणित से संबंधित एक प्रश्न है। –