2015-12-20 37 views
1

這個函數有什麼錯? 我需要返回相同的向量作爲輸入,如果所有的值是0,否則最小 - 最大規範化檢查0矢量中的R

normalize <- function(x) { 
    if (all(x==0)) return x 
    return((x-min(x))/(max(x)-min(x))) 
} 
+0

你爲什麼不用'else'? – akrun

+0

我認爲這是不必要的 –

+1

我想'歸一化< - 函數(x){if(all(x == 0))x else((x-min(x))/(max(x)-min x))) }' – akrun

回答

1

我認爲你的問題只是你沒有在你的回報語句中使用()

x <- as.numeric(c(0,0,1,0,0,1,100,0,0,1,-23)) 

normalizeX <- function(x) { 
    if (all(x==0)) { 
    return (x) 
    } else{ 
    m  <- min(x) 
    ma  <- max(x) 
    result <- ((x-m)/(ma-m)) 
    return (result) 
    } 
} 

normalizeX(x) 

[1] 0.1869919 0.1869919 0.1951220 0.1869919 0.1869919 0.1951220 1.0000000 0.1869919 0.1869919 0.1951220 0.0000000 

x <- as.numeric(c(0,0,0)) 
normalizeX(x) 
[1] 0 0 0 

我加了一些其他小的變化,比如調用函數東西是不會被包被屏蔽,並存儲中間值,便於調試/分析。