在 Julia 中分配一个数组Union{T, Missing}是非常昂贵的。有什么解决方法吗?
julia> @time Vector{Union{Missing, Int}}(undef, 10^7);
0.031052 seconds (2 allocations: 85.831 MiB)
julia> @time Vector{Union{Int}}(undef, 10^7);
0.000027 seconds (3 allocations: 76.294 MiB)
Run Code Online (Sandbox Code Playgroud) 是正确的还是有问题Base.summarysize?
julia> x = rand(Int8, 100);
julia> Base.summarysize(x)
140
julia> x = allowmissing(x);
julia> Base.summarysize(x)
240
Run Code Online (Sandbox Code Playgroud) 我最初在论坛中提出这个问题data.table,并收到了一些很好的答案,但我希望找到一个不到一秒的解决方案(真实数据暗淡 3M x 303)
我在 R 社区中的帖子以及 julia 中的 MWE 的链接(使用 DataFrames.jl 如果我使用了错误的包,请告诉我)
\njulia> using DataFrames\n\njulia> df = DataFrame(v1 = [1.0,2.1,3.0], v2 = [1,3,3], v3 = [missing,2.1,3.0])\n3\xc3\x973 DataFrame\n Row \xe2\x94\x82 v1 v2 v3\n \xe2\x94\x82 Float64 Int64 Float64?\n\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\n 1 \xe2\x94\x82 1.0 1 missing\n 2 \xe2\x94\x82 2.1 3 2.1\n 3 \xe2\x94\x82 3.0 3 3.0\n\njulia> desired = [true,false,true]\n3-element Vector{Bool}:\n 1\n 0\n 1\nRun Code Online (Sandbox Code Playgroud)\n 我想检查每行中的所有值是否相同,但是NA应该忽略 MWE:
library(data.table)
DT=data.table(v1=c(1,2,3),v2=c(1,3,3), v3=c(NA,2,3))
DT
v1 v2 v3
1: 1 1 NA
2: 2 3 2
3: 3 3 3
desired=c(T,F,T)
desired
[1] TRUE FALSE TRUE
Run Code Online (Sandbox Code Playgroud)