2010-12-10 66 views
3

現在我做這種方式:如何重新調整點矩陣?

d = approx(density(csvdata[,'X'],n=5000),xout=csvdata[,'X']) 
dfact = 40/max(d$y) 
for(i in 1:nrow(csvdata)) { 
    d$y[i] = (d$y[i]*dfact)-20 
} 

什麼我在這裏做的是重新調整密度函數總是高於0,從我的表的底部是在-20始終顯示下適合+20的頂部,所以我更加容易辨別線上的任何不規則性。現在你可以看到我正在通過循環來做這件事,但是也許有一些內置的內置版本呢?

回答

3

y是一個向量,而*-是向量化函數,所以你不需要循環遍歷數字的向量來進行一次一個計算。只要做一次全部:

d$y <- (d$y * dfact) - 20 

或更好的(不d$),

d <- within(d, y <- (y * dfact) - 20) 

dfact是一個標量(長度1向量R作爲它沒有標量的一個單獨的概念),但R將擴大dfact再循環是R中的正確的術語)到所需的長度,以允許上述計算以正常進行。