我正在尝试使用lapply apply将此函数应用于向量,但它只返回NaN。
Select tm.LocID = (select LocID from tblLoc tl
where tl.LocID = tm.LodID )
from tblMain tm
当我使用normalize(c(1,5,10))时它工作正常。
答案 0 :(得分:2)
如果您使用normalize(x)
,则会获得正确的结果。在这种情况下,函数接收具有若干个数作为参数的向量,从中可以确定最小值和最大值以计算归一化值。
相反,使用lapply(x,normalize)
,您可以有效地执行一个循环,将函数normalize()
应用于向量x
的每个元素。由于每次迭代只将一个数字(向量元素)传递给函数,因此min(x)
等于max(x)
。因此,分母max(object)-min(object)
在每次迭代时为零,每次调用函数时除以零都会产生NaN
。
修改强>
lapply
的调用在x
是矢量列表的情况下非常有用。然后,可以立即获得列表x
中每个向量的归一化版本(根据OP中定义的函数)。
以下是一个例子:
x <- list()
x[[1]] <- c(1,3,9)
x[[2]] <- c(2,4,4,8)
x[[3]] <- c(1,2,3,5,8,13)
> lapply(x,normalize)
#[[1]]
#[1] 0.00 0.25 1.00
#
#[[2]]
#[1] 0.0000000 0.3333333 0.3333333 1.0000000
#
#[[3]]
#[1] 0.00000000 0.08333333 0.16666667 0.33333333 0.58333333 1.00000000