一种简单的方法,用这个向量的每个元素来计算这个向量的每一个元素



例如,对于向量的每个元素,我想计算该向量的其他元素的残差之和。这适用于一个元素:

a = [1, 2, 5, 7, 8, 22]
f(x) = sum(abs.(x .- a))
f(2)
Out: 35

但是,如果使用map((将此函数应用于所有元素,Julia将返回一个错误:

map(a, f)
Out: "MethodError: no method matching iterate(::typeof(f))"

在R中,使用sapply((:很容易获得

a = c(1, 2, 5, 7, 8, 22)
sapply(a, function(x) sum(abs(x - a)))
Out: 39 35 29 29 31 87

在Julia身上有没有同样优雅的方式?

仅在f:上矢量化

julia> f.(a)
6-element Array{Int64,1}:
39
35
29
29
31
87
函数map将应用于集合的函数作为其第一个参数。也就是说,你可以写
map(f, a)

请注意,为了更接近R语法,map()(通常是julia(允许您在映射调用后指定一个匿名函数,该函数用作映射的第一个参数,因此:

julia> map(a) do x
sum(abs.(x .- a))
end
6-element Array{Int64,1}:
39
35
29
29
31
87

最新更新