使用juliarcall包将NA传递给R
对于imputeTS包,我在将数组中的NA传递给R时遇到了一些问题 假设我有这个数组:使用juliarcall包将NA传递给R,julia,rcall,Julia,Rcall,对于imputeTS包,我在将数组中的NA传递给R时遇到了一些问题 假设我有这个数组: a = Any[1, 2, 3, NaN, 5] 我想把它传给这个: R""" b <- na_seadec($a, algorithm = "kalman", find_frequency = TRUE, maxgap = Inf) """ R”“” bNaN在茱莉亚将是NaN在R。 如果要在R中使用NA,则应在Julia中使用missing: julia> x = [1, 2, NaN]
a = Any[1, 2, 3, NaN, 5]
我想把它传给这个:
R"""
b <- na_seadec($a, algorithm = "kalman", find_frequency = TRUE, maxgap = Inf)
"""
R”“”
bNaN
在茱莉亚将是NaN
在R。
如果要在R中使用NA
,则应在Julia中使用missing
:
julia> x = [1, 2, NaN]
3-element Array{Float64,1}:
1.0
2.0
NaN
julia> y = [1, 2, missing]
3-element Array{Union{Missing, Int64},1}:
1
2
missing
julia> R"$x"
RObject{RealSxp}
[1] 1 2 NaN
julia> R"$y"
RObject{IntSxp}
[1] 1 2 NA
您可以在Julia手册的中找到详细信息
下面是一个示例会话:
julia> R"library(imputeTS)"
RObject{StrSxp}
[1] "imputeTS" "stats" "graphics" "grDevices" "utils" "datasets"
[7] "methods" "base"
julia> a = [1,2,3,missing,5]
5-element Array{Union{Missing, Int64},1}:
1
2
3
missing
5
julia> R"""
b <- na_seadec($a, algorithm = "kalman", find_frequency = TRUE, maxgap = Inf)
"""
┌ Warning: RCall.jl: Warning in na_seadec(`#JL`$a, algorithm = "kalman", find_frequency = TRUE, :
│ No seasonality information for dataset could be found, going on without decomposition.
│ Setting find_frequency=TRUE might be an option.
└ @ RCall ~/.julia/packages/RCall/g7dhB/src/io.jl:113
RObject{RealSxp}
[1] 1 2 3 4 5
julia>R“库(输入)”
RObject{StrSxp}
[1] “输入”“统计”“图形”“GR设备”“utils”“数据集”
[7] “方法”“基”
julia>a=[1,2,3,缺失,5]
五元素数组{Union{缺失,Int64},1}:
1.
2.
3.
丢失的
5.
朱莉娅>R“
b我想我发现了问题。R的方法是.numeric(),我不知道它在Julia中的等价物。问题是:我没有静态地定义“a”,我必须将它定义为一个空数组并将值推送到它。可能问题在于如何定义“a”数组。在推送所有值之后,我试图将其转换为Float64,但因为它包含missing,所以出现了错误。现在怎么办?可能使用例如collect(Union{Float64,Missing},a)
应该会给你想要的,但是我需要一个完整的代码来确定(这是这个问题的一个单独的问题,所以如果我写的东西不能解决你的问题,也许可以发布另一个特定于转换问题的问题)。好的!!!最终我找到了答案:convert(数组{Union{Missing,Float64}},a)。我认为这绝对等同于as.numeric()。谢谢你的帮助convert
几乎是相同的,但正如我所建议的,等效的是collect
。不同之处在于,collect
将始终创建一个副本(如R中的as.numeric
),而如果a
已经具有eltype
等于Union{Missing,Float64}
,则convert
将不会创建副本。