【问题标题】:DataArrays in JuliaJulia 中的数据数组
【发布时间】:2013-12-28 21:45:25
【问题描述】:

我正在试用 Julia 和 DataArray 包。我想用零初始化一个大小由存储在变量“n”中的整数给出的数据数组。但是,我收到一条错误消息“错误:n 未定义”(尽管看起来很明显)。

以下是一个小例子:

using DataArrays
n = 8
@data(zeros(Float64,n))

这对我来说会产生上述错误消息。 (注意

using DataArrays
@data(zeros(Float64,8))

确实有效。)

有什么想法吗?

【问题讨论】:

    标签: julia


    【解决方案1】:
    n = 8
    float64(DataArray(zeros(Float64 ,n)))
    

    会带你去你要去的地方。 @data 宏有点糟糕,我能想到的唯一用途是在编写测​​试时,如果你想说类似的话

    x = @data([1,2,3,NA])
    

    通常,列表构造函数会对您产生影响。然而,这也有效:

    x = float64(DataArray(Any[1,2,3,NA]))
    

    所以,我不知道。远离那个@data 宏。通常,宏很难从其他模块中看到您的局部变量或函数和变量。这是一个可以明显解决的问题,因为@show 大部分都有效,但许多宏都有这个问题和其他问题。一般来说,宏有点可疑。

    【讨论】:

    • 我同意 Michael 的观点,即 @data 宏需要大量工作。但我也不会使用他提出的解决方案,它会创建一个DataArray{Any},这几乎肯定不是你想要的。最简单的解决方案是@data(zeros($n))
    • 感谢迈克尔和约翰;我没有编程背景(到目前为止只广泛使用 R),所以我一直没有注意到宏的问题。
    • @JohnMylesWhite 这就是为什么我一直不得不convert我的DataArrays。固定:float64(DataArray(Any[1., 2., NA]))
    • @MichaelFox:你不应该那样做。 @data 宏只是错误的。 FWIW,它比它取代的以前的错误解决方案更好。
    猜你喜欢
    • 2016-08-12
    • 1970-01-01
    • 2016-01-06
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 2018-10-30
    • 2020-09-14
    • 1970-01-01
    相关资源
    最近更新 更多