现在我这样做:
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的顶部,所以我更容易能够发现线上的任何不规则。现在你可以看到我通过循环来做这个,但是也许有一些内置的内置它?
答案 0 :(得分:3)
y
是一个向量,*
和-
是向量化函数,因此您无需循环遍历一次执行计算的数字向量。只需一次完成所有操作:
d$y <- (d$y * dfact) - 20
或更好(不是d$
),
d <- within(d, y <- (y * dfact) - 20)
dfact
是一个标量(R中的长度为1的向量,因为它没有单独的标量概念),但R将展开dfact
( recycle 是R)中的正确术语到所需的长度,以允许上述计算正常进行。