接受因子和数值输入的函数

Function that accepts factor and numerical inputs

我正在使用 R 编程语言。我正在尝试优化一个可以接受数字和因子输入的函数。

为了优化,我使用 GA 库。
我的参考文献:demo, actual Library, specific function I'm using

假设我有一个如下所示的函数:

my_function <- function(r1, r2) {
    #define function here, e.g:

    #this "select" can be done using "dplyr" or SQL part1 <- SELECT * FROM
    my_data WHERE (col_1 IN r1) AND (col_2 > r2)

    part2<- mean(part1$col_3)
}

在这个例子中:

问题: 目前,我正在尝试使用 R 中的 ga 函数优化 my_function

library(GA)
GA <- ga(type = "real-valued", 
         fitness = function(x)  my_function(x[1], x[2]),
         lower = c(c("a", "b", "c", "d"), 1), upper = c(c("a", "b", "c", "d"), 100), 
         popSize = 50, maxiter = 1000, run = 100)

但我不确定如何正确设置它。
我不确定如何正确定义 my_function,我也不确定如何正确定义 GA。

我想你正在寻找这样的东西:

library("dplyr")

df <- data.frame(a = rep(letters[1:3], each=2),
                 b = rep(c(1,9), 3),
                 c = 1:6)
df
#>   a b c
#> 1 a 1 1
#> 2 a 9 2
#> 3 b 1 3
#> 4 b 9 4
#> 5 c 1 5
#> 6 c 9 6

my_subset_mean <- function(r1, r2){ ## Assumes an object `df` with cols a|b|c
  subset <- df %>% filter(a %in% r1, b > r2)
  return(mean(subset$c))
}

my_subset_mean(r1 = c("a"), r2 = 5) ## ~mean(2)
#> [1] 2
my_subset_mean(r1 = c("a", "b"), r2 = 0) ## ~mean(1:4)
#> [1] 2.5
my_subset_mean(r1 = c("a", "b"), r2 = 10) ## ~mean of df with 0 rows
#> [1] NaN

reprex package (v2.0.0)

于 2021-09-25 创建