如何重新调整点阵矩阵的大小?

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,这样我更容易发现线条中的任何异常。现在,您可以看到我正在使用循环来完成此操作,但也许有一些内置的一行代码可以实现这个功能?
1个回答

3

y是一个向量,*-是向量化函数,因此您不需要逐个计算数字向量的循环。只需一次性完成所有计算:

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

或者更好的方式(不要有 d$)。
d <- within(d, y <- (y * dfact) - 20)

dfact 是一个标量(在 R 中是长度为 1 的向量,因为它没有单独的标量概念),但是 R 将会把 dfact循环使用 是 R 中的正确术语)扩展到所需的长度,以便上述计算可以正常进行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接