现在,我这样做:

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的顶部,因此我更容易发现生产线上的任何不规则之处。现在,您可以看到我正在通过循环执行此操作,但是也许有一些内置衬管可以执行此操作?

最佳答案

y是 vector ,而*-是 vector 化函数,因此您无需一次遍历数字 vector 即可一次进行计算。一次完成所有操作:

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

或更好(没有d$),
d <- within(d, y <- (y * dfact) - 20)
dfact是一个标量(R中的长度为1的 vector ,因为它没有单独的标量概念),但是R会将dfact(recycle是R中的正确术语)扩展为所需的长度,以使上述计算可以继续进行正常。

关于r - 如何重新缩放点矩阵?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4407761/

10-09 17:09