Menzildeyim [1,10]
R vektörü farklı bir aralığa nasıl eşlenir? örneğin,
c(1,2,9,10)
bir vektör var ve farklı bir yelpazede eşlemek istediğiniz [12,102]
c(12,22,92,102)
zaten R içinde yapar işlevi var mı?
Menzildeyim [1,10]
R vektörü farklı bir aralığa nasıl eşlenir? örneğin,
c(1,2,9,10)
bir vektör var ve farklı bir yelpazede eşlemek istediğiniz [12,102]
c(12,22,92,102)
zaten R içinde yapar işlevi var mı?
linMap <- function(x, from, to)
(x - min(x))/max(x - min(x)) * (to - from) + from
linMap(vec, 12, 102)
# [1] 12 22 92 102
Ya da daha açık bir şekilde: Paketi scales
kullanarak
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))
çalışır. Ayrıca, bir kullanıcı approxfun
tarafından @ flodel:
linMap <- function(x, a, b) approxfun(range(x), c(a, b))(x)
"linMap" ve "rescale" öğelerinizde geçici olarak bir davranışım var ve bazı sütunlar R 3.3.2'de sıfıra iniyor. Örnek değerler 'all.dat <- c (2274959, 1531001)'. Neden biliyor musun? –
@Masi, zamansal davranıştan ne demek istiyorsun? Sanırım All.dat'ın cevabı "x" dir. Öyleyse, 'gelen', 'sizin', beklenen çıktınız ve bunun yerine ne alıyorsunuz? – Julius
Bunun yerine sıfır sütun alıyorum. –
Tarafından önerilen şekilde akıllı bir şekilde kullanılabilir. Neden 2'nin 62'ye neden haritalandığını anlamıyorum veya neden menzilinizin dışında kaldığı için 270'in içinde var. – David
Üzgünüz @David, sorunu anlamak için kullandığım iki örneği karıştırdım. Temel olarak doğrusal bir haritalamadır. – nachocab
Bu açık olmalı, ama bu bir 'R' soru değil. Temel lineer cebir ile ilgili bir soru. –