2010-12-10 77 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中的正确的术语)到所需的长度,以允许上述计算以正常进行。