Julia 朱莉娅:如何让colwise返回一个数组而不是数组数组?

Julia 朱莉娅:如何让colwise返回一个数组而不是数组数组?,julia,Julia,我想创建一个函数,该函数查看数据帧的每一列并返回一个布尔值,因此我最终得到一个布尔值数组。这是密码 # some random dataframe df = DataFrame([1:3, 4:6]) # a function that returns an array of boolean function some_bool_fn(df)::Array{Bool} array_of_arrays = colwise(df) do sdd3 # for illustr

我想创建一个函数,该函数查看数据帧的每一列并返回一个布尔值,因此我最终得到一个布尔值数组。这是密码

# some random dataframe
df = DataFrame([1:3, 4:6])

# a function that returns an array of boolean
function some_bool_fn(df)::Array{Bool}
    array_of_arrays = colwise(df) do sdd3
        # for illustration only
        return true
    end
    array = [a[1] for a in array_of_arrays]
    return array
end

# calling the function
some_bool_fn(dd3)
除非我找到那条线,否则这条线就行了

        array = [a[1] for a in array_of_arrays]

有点浪费。基本上,我得到一个数组数组作为
colwise
的输出,因此我必须将数组数组数组放入一个简单的布尔数组中。有没有一种编写代码的方法可以避免这一行代码?

正如@Gnimuc评论的那样,这种行为正在改变

如果您查看master branch:您将看到另一个版本。您可以复制它:

mycolwise(f, d::AbstractDataFrame) = [f(d[i]) for i in 1:ncol(d)]

我如何使用这个版本?是Pkg.checkout(“DataFrames”)@xiaodai我认为为这么一个小功能(仅一行代码更改)签出DataFrames的master是一种过分的做法,因为您很容易遭受其他故障。就像Liso在回答中建议的那样,您可以云定义另一个
colwise
或直接覆盖
DataFrames.colwise
。@gnimu因为定义了更多的方法,所以仅覆盖这一行是不够的。也许可以根据DataFrames版本进行条件编译。(顺便问一下,如何获取此版本信息?@Liso很有意义。您可以通过
Pkg.installed(“DataFrames”)
;)获取版本号