如何在数组或数据框中保存Julia for循环返回?

问题描述 投票:3回答:1

我试图在代码显示的DataFrame的每一行上应用一个函数。

using RDatasets
iris = dataset("datasets", "iris")

function mean_n_var(x)
    mean1=mean([x[1], x[2], x[3], x[4]])
    var1=var([x[1], x[2], x[3], x[4]])
    rst=[mean1, var1]
    return rst
end

mean_n_var([2,4,5,6])

for row in eachrow(iris[1:4])
    println(mean_n_var(convert(Array, row)))
end

但是,我不想打印结果,而是将它们保存在数组或其他DataFrame中。

提前致谢。

for-loop dataframe julia
1个回答
2
投票

我认为有必要提一下已经提到的更多选项。

我假设你想要一个MatrixDataFrame。有几种可能的方法。

首先是最直接获得Matrix

mean_n_var(a) = [mean(a), var(a)]
hcat((mean_n_var(Array(x)) for x in eachrow(iris[1:4]))...) # rows
vcat((mean_n_var(Array(x)).' for x in eachrow(iris[1:4]))...) # cols

另一种可能的方法是矢量化,例如:

mat_iris = Matrix(iris[1:4])
mat = hcat(mean(mat_iris, 2), var(mat_iris, 2))
df = DataFrame([vec(f(mat_iris, 2)) for f in [mean,var]], [:mean, :var])
DataFrame(mat) # this constructor also accepts variable names on master but is not released yet
© www.soinside.com 2019 - 2024. All rights reserved.