arrays - Julia 中以 DataArrays 和 Arrays 作为参数的函数

标签 arrays function parameters julia

我想编写一个可以在 Julia 中同时使用 DataArray 和标准数组的函数。实际上,我想编写一个函数的方法——一种采用两个类似向量的结构作为参数,另一种采用两个类似矩阵的参数。

由于数组和 DataArray 基本相同,只是 DataArray 允许 NA 值,所以我真的不想为每个函数编写 4 个版本,只是为了合并 Array 和 DataArray 参数的所有不同组合。现在,我使用以下六个(!)函数来实现我的目标:

function covar_to_intensity{T<:Number}(covariates::Array{T, 1}, coefficients::Array{T, 1})
  try
    return(exp(covariates' * coefficients)[1])
  catch
    error("Multiplication of covariates and coefficients not possible.")
  end
end

function covar_to_intensity{T<:Number}(covariates::Array{T, 2}, coefficients::Array{T, 2})
  try
    return(exp(covariates * coefficients))
  catch
    error("Multiplication of covariates and coefficients not possible.")
  end
end

function covar_to_intensity{T<:Number}(covariates::DataArray{T, 1}, coefficients::DataArray{T, 1})
  try
    return(exp(covariates' * coefficients)[1])
  catch
    error("Multiplication of covariates and coefficients not possible.")
  end
end

function covar_to_intensity{T<:Number}(covariates::DataArray{T, 2}, coefficients::DataArray{T, 2})
  try
    return(exp(covariates * coefficients))
  catch
    error("Multiplication of covariates and coefficients not possible.")
  end
end

function covar_to_intensity{T<:Number}(covariates::Array{T, 1}, coefficients::DataArray{T, 1})
  try
    return(exp(covariates' * coefficients)[1])
  catch
    error("Multiplication of covariates and coefficients not possible.")
  end
end

function covar_to_intensity{T<:Number}(covariates::Array{T, 2}, coefficients::DataArray{T, 2})
  try
    return(exp(covariates * coefficients))
  catch
    error("Multiplication of covariates and coefficients not possible.")
  end
end

我知道这可能是计算这些乘积的低效方法,但我对如何编写同时采用数组和 DataArray 的函数也很感兴趣。

谢谢!

最佳答案

一般来说,您可以为AbstractArray定义方法:

function covar_to_intensity{T<:Number}(covariates::AbstractVector{T}, coefficients::AbstractVector{T})
  try
     return exp(covariates * coefficients)
  catch
    error("Multiplication of covariates and coefficients not possible.")
   end
end

function covar_to_intensity{T<:Number}(covariates::AbstractMatrix{T}, coefficients::AbstractMatrix{T})
  try
     return exp((covariates' * coefficients)[1])
  catch
    error("Multiplication of covariates and coefficients not possible.")
   end
end

关于arrays - Julia 中以 DataArrays 和 Arrays 作为参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24383449/

相关文章:

php - 如何显示自定义字段值数组中的 Wordpress 帖子

javascript - 将 JavaScript 数组中的项目放在任意索引上

function - 私有(private)函数与嵌套函数

Java:可变长度参数作为递归列表

angular - 类型 'number' 的参数不可分配给类型 'string' 的形参

javascript - 基于多个匹配键合并对象 - Javascript

arrays - 数组跳到带权重的末尾算法?

c++ - 通过模板传递成员函数指针

python - 在另一个函数中导​​入一个函数

stored-procedures - Oracle 中存储过程的默认值