我试图编写一个Julia函数(在本例中为weighted_sum
)并在R中使用它。
function weighted_sum(v::Vector, w::Vector, skipmissing::Bool)
if skipmissing
v = v[findall(!ismissing, v)]
w = w[findall(!ismissing, v)]
end
return sum(v .* w)
end
println(weighted_sum([1, 2, 3, 1], [1, 2, 2, 1], true))
#> 12
println(weighted_sum([1, 2, 3, missing], [1, 2, 2, 1], true))
#> 11
R代码:
library(JuliaCall)
julia_weighted_sum_function <- JuliaCall::julia_eval("function weighted_sum(v::Vector, w::Vector, skipmissing::Bool)
if skipmissing
v = v[findall(!ismissing, v)]
w = w[findall(!ismissing, v)]
end
return sum(v .* w)
end")
#> Julia version 1.5.0 at location C:\Users\{path_to_julia}\julia\V15~1.0\bin will be used.
#> Loading setup script for JuliaCall...
#> Finish loading setup script for JuliaCall.
weighted_sum_jl <- function(x, weights, epsilon, na.rm = TRUE){
JuliaCall::julia_call("weighted_sum", x, weights, na.rm)
}
weighted_sum_jl(x = c(1, 2, 3, 1), w = c(1, 2, 2, 1), TRUE)
#> [1] 12
weighted_sum_jl(x = c(1, 2, 3, NA), w = c(1, 2, 2, 1), TRUE)
#> Error: Error happens in Julia.
#> MethodError: no method matching weighted_sum(::Base.ReshapedArray{Union{Missing, Float64},1,Array{Union{Missing, Float64},1},Tuple{}}, ::Array{Float64,1}, ::Bool)
#> Closest candidates are:
#> weighted_sum(!Matched::Array{T,1} where T, ::Array{T,1} where T, ::Bool) at none:1
#> Stacktrace:
#> [1] docall(::Ptr{Nothing}) at C:\Users\{path_to_R}\R\win-library\4.0\JuliaCall\julia\setup.jl:176
由reprex包(v2.0.1)在2021-09-05创建
sessioninfo::session_info()
#> - Session info ---------------------------------------------------------------
#> setting value
#> version R version 4.0.5 (2021-03-31)
#> os Windows 10 x64
#> system x86_64, mingw32
#> ui RTerm
#> language (EN)
#> collate English_United Kingdom.1252
#> ctype English_United Kingdom.1252
#> tz Europe/Berlin
#> date 2021-09-05
#>
#> - Packages -------------------------------------------------------------------
#> package * version date lib source
#> cli 2.4.0 2021-04-05 [1] CRAN (R 4.0.5)
#> digest 0.6.27 2020-10-24 [1] CRAN (R 4.0.5)
#> evaluate 0.14 2019-05-28 [1] CRAN (R 4.0.5)
#> fs 1.5.0 2020-07-31 [1] CRAN (R 4.0.5)
#> glue 1.4.2 2020-08-27 [1] CRAN (R 4.0.5)
#> highr 0.8 2019-03-20 [1] CRAN (R 4.0.5)
#> htmltools 0.5.1.1 2021-01-22 [1] CRAN (R 4.0.5)
#> JuliaCall * 0.17.4 2021-05-16 [1] CRAN (R 4.0.5)
#> knitr 1.32 2021-04-14 [1] CRAN (R 4.0.5)
#> magrittr 2.0.1 2020-11-17 [1] CRAN (R 4.0.5)
#> ps 1.6.0 2021-02-28 [1] CRAN (R 4.0.5)
#> Rcpp 1.0.7 2021-07-07 [1] CRAN (R 4.0.5)
#> reprex 2.0.1 2021-08-05 [1] CRAN (R 4.0.5)
#> rlang 0.4.10 2020-12-30 [1] CRAN (R 4.0.5)
#> rmarkdown 2.7 2021-02-19 [1] CRAN (R 4.0.5)
#> rstudioapi 0.13 2020-11-12 [1] CRAN (R 4.0.5)
#> sessioninfo 1.1.1 2018-11-05 [1] CRAN (R 4.0.5)
#> stringi 1.5.3 2020-09-09 [1] CRAN (R 4.0.3)
#> stringr 1.4.0 2019-02-10 [1] CRAN (R 4.0.5)
#> withr 2.4.1 2021-01-26 [1] CRAN (R 4.0.5)
#> xfun 0.22 2021-03-11 [1] CRAN (R 4.0.5)
#> yaml 2.2.1 2020-02-01 [1] CRAN (R 4.0.4)
因此,Julia
中的missing
是其他语言中缺少值的一种概括。不清楚为什么r
中的na
出现问题。尝试更改为nan
作为输入,它通过使用isnan
来工作
library(JuliaCall)
julia_weighted_sum_function <- JuliaCall::julia_eval("function weighted_sum(v::Vector, w::Vector, skipmissing::Bool)
if skipmissing
v = v[findall(!isnan, v)]
v = v[findall(!ismissing, v)]
w = w[findall(!ismissing, v)]
end
return sum(v .* w)
end")
weighted_sum_jl <- function(x, weights, epsilon, na.rm = TRUE){
JuliaCall::julia_call("weighted_sum", x, weights, na.rm)
}
-测试
> weighted_sum_jl(x = c(1, 2, 3, 1), w = c(1, 2, 2, 1), TRUE)
[1] 12
> weighted_sum_jl(x = c(1, 2, 3, NaN), w = c(1, 2, 2, 1), TRUE)
[1] 11
有人这样做过吗?怎么做?
我试图编写一个函数,该函数采用数据帧和变量名(或变量名列表),并使用group_by和summary函数输出摘要信息。然而,我不断得到以下错误之一: 或此错误: 最后一个错误表示它找不到名为“value”的列,该列包含数据框的值(熔化后)。 这是我的代码: 这是一个小数据示例。请注意,“变量”是一个总是被传递到group_by函数中的列,所以我决定将其硬编码。 如何编写此函数,使其接受group_
我正在处理平台频道(PlatformChannels),试图从Kotlin(Kotlin)到Flatter(颤振)进行通信。尝试实际执行颤振平台频道文档中解释的操作,但方向相反: 通道文件颤振平台 其思想是从MainActivity上的ConfigureFlatterEngine函数调用颤振函数。kt级。 为此,我做了,在颤振方面,梅因。dart(颤振的默认示例): 从Kotlin方面来说,我只是
问题内容: 我可以在R中使用以下代码在任何通用SQL数据库中选择不同的行。我会使用,但SQL语法不支持它。无论如何,这确实有效: 我一直在成功使用它,但是想知道如何在其他dplyr步骤之后传递相同的SQL查询,而不是像上面所示那样仅将其用作第一步。最好用一个例子来说明: 因此,我有两个SQL表,然后我要查看不同的行,并保留所有列。是否如上所述将SQL代码通过管道传递到R中(简单地利用该函数)?如果
我在C 11应用程序中有长时间运行的功能,基本上是。我需要通知这个函数在不同线程中出现。要求: 可以随时上升。 应用程序最多只能在一个地方处理(也可以不处理)。 它不需要超快速执行,也不需要延迟执行 截至目前,我考虑了两种选择: 传递包含。然后在<code>sub_main</code>内定期轮询对象,以了解新的<code>情况</code>。轮询对象已从队列中删除。当应用程序决定不处理特定位置的