1

Pingouin.jl用来测试正常性。

在他们的文档中,我们有

dataset = Pingouin.read_dataset("mediation")
Pingouin.normality(dataset, method="jarque_bera")

哪个应该返回DataFrame正常性true或数据集中false的每个name

目前,此广播已被弃用,我无法将每个唯一列输出(正在工作并输出一个 DataFrame)的结果连接到一个 DataFrame 中。

所以,到目前为止我所拥有的。

function var_norm(df)
  norm = DataFrame([])
  for i in 1:1:length(names(df))
        push!(norm, Pingouin.normality(df[!,names(df)[i]], method="jarque_bera"))
  end
  return norm
end

我得到的错误:

julia> push!(norm, Pingouin.normality(df[!,names(df)[1]], method="jarque_bera"))
ERROR: ArgumentError: `push!` does not allow passing collections of type DataFrame to be pushed into a DataFrame. Only `Tuple`, `AbstractArray`, `AbstractDict`, `DataFrameRow` and `NamedTuple` are allowed.
Stacktrace:
 [1] push!(df::DataFrame, row::DataFrame; promote::Bool)
   @ DataFrames ~/.julia/packages/DataFrames/vuMM8/src/dataframe/dataframe.jl:1603
 [2] push!(df::DataFrame, row::DataFrame)
   @ DataFrames ~/.julia/packages/DataFrames/vuMM8/src/dataframe/dataframe.jl:1601
 [3] top-level scope
   @ REPL[163]:1

编辑push!在我的第一个版本的帖子中没有正确编写函数。但是,更改后错误仍然存​​在。如何将DataFramePingouin 的类型输出重新格式化为DataFrameRow

4

1 回答 1

1

作为Pengouin.normality返回 a DataFrame,您将不得不遍历其结果并逐个推送:

df = Pengouin.normality(…)
for row in eachrow(df)
    push!(norms, row)
end

如果你确定Pengouin.normality返回 aDataFrame正好一行,你可以简单地写

push!(norms, only(Pengouin.normality(…)))
于 2021-11-04T19:29:06.287 回答