在 Java 中,我想定义一个规范化函数,该函数将一个数字作为输入,但其行为由多个参数定义。
本质上,在 Lisp 中的 Java 等价物是:
(define (normalizeVal min max floor ceiling)
(lambda (x) (/ (* (- ceiling floor) (- x min)) (+ (- max min) floor))))
Run Code Online (Sandbox Code Playgroud)
在伪代码中,我想:
function parsing(data, normalizeValFunc) {
for (datum in data):
normalizeValFunc(datum);
}
var input = userData;
var min, max, floor, ceiling = /* Calculate min, max, floor, and ceiling */
var output = parsing(input, normalizeValFunc(min, max, floor, ceiling));
Run Code Online (Sandbox Code Playgroud)
在 Java 中将函数作为参数传递可能很棘手,因为函数在 Java 中不是一等对象。(也许 Java 8 Lambda 表达式会改变这一点?)其他问题解决了在 Java …
我有一系列值(即一列数据),我想创建一个图,其中包含 x 轴上的数据值范围和每个值在 y 轴上的数据集中出现的频率.
我想要的是非常接近核密度图:
# Kernel Density Plot
d <- density(mtcars$mpg) # returns the density data
plot(d) # plots the results
Run Code Online (Sandbox Code Playgroud)
但是,我想要y 轴上的频率(而不是密度)。
具体来说,我正在处理网络度分布,并且想要一个带有开放圆形点的双对数比例,即这个图像。
我已经对相关资源和问题进行了研究,但还没有找到我想要的:
R's Plotting 分布的食谱接近我想要的,但不准确。我想用直方图示例中定义的“计数”替换其密度曲线示例中的 y 轴。
ecdf()R 中的函数(即这个问题)可能是我想要的,但我想要观察到的频率,而不是 y 轴上 0 和 1 之间的归一化值。
这个问题与频率分布有关,但我想要点,而不是条。
编辑:
数据是标准的幂律分布,即
dat <- c(rep(1, 1000), rep(10, 100), rep(100, 10), 100)
Run Code Online (Sandbox Code Playgroud)