我正在构建一个数据框,其中对于某些列,创建它们的明显方法涉及多步骤过程。我想用 eltype Union{Missing, T} 惯用且简洁地创建一个列。然后我可以使用多步骤过程填充该列(并在完成后酌情禁止)。最干净的方法是什么?
我想做类似的事情df[!, :col] :: Vector{Union{Int64, Missing}} .= missing但这给了"ArgumentError: column name :col not found in the data frame; ..."
如果我尝试去做df[!, :col] .= fill(missing, nrow(df)) :: Vector{Union{Int64, Missing}},我就会得到"TypeError: in typeassert, expected Vector{Union{Missing, Int64}}, got a value of type Vector{Missing}"。
目前我正在做一些丑陋且令人困惑的事情,比如
df[!, :col] .= 0
allowmissing!(df, :col)
df.col .= missing
有什么建议么?我的感觉是,如果我有这个问题,我并不真正理解 DataFrames.jl 中的列类型如何工作的细微差别,即使我一直使用它并且通常没有问题。我搜索了文档,但感觉没有看到任何有助于解决此特定问题的内容,但任何推荐的阅读都将不胜感激。
谢谢!