【问题标题】:Find string which reaches maximum查找达到最大值的字符串
【发布时间】:2020-12-06 09:47:03
【问题描述】:

让我们考虑非常简单的功能:

find_max <- function(num) {
  vec <- c()
  t <- seq(-1,1,num)
    for (i in 1:length(t)) {
      for (j in 1:length(t)) {
        vec <- append(vec, setNames(((i-j)/2),paste('i'=t[i],'j'=t[j])))
      }
    }
  names(which.max(vec))
} 
> find_max(0.1)
[1] "0.9 0.1"

返回取最大值的字符串。

另外让我们考虑另一个函数mean_bound,它接受包含两个字符串的向量,如果它们的均值小于 0.3,则返回 1,否则返回 0。

mean_bound <- function(strings) {
  check_vec <- c()
  convert_string <- as.numeric(unlist(strsplit((gsub(".*(\\d\\.\\d).*(\\d\\.\\d)", "\\1 \\2", strings)), " ")))
  ifelse(mean(convert_string) < 0.3, check_vec <- 1, check_vec <- 0)
}
mean_bound(find_max(0.1)) 
0

现在我想创建函数find_mean_bound_max,它将完全执行find_max 正在做的事情,但添加了mean_bound 条件(以便找到两个最佳字符串)。这么简单地说,我想找到我们拥有的字符串:

你知道如何执行吗?我试图把这个 mean_bound 放在 find_max 的某个地方,但没有任何结果。

编辑

find_max

find_max(num) - 计算差 (i-j)/2 的函数,其中 i,j 是由seq(-1,1,num) 创建的数字(这个函数没有意义,但它只是为了示例而创建的)。它返回 i,j(作为字符串),其中差异 (i-j)/2 取最大值。

所以在我们之前提供的示例中:

find_max(0.1)
[1] "0.9 0.1" 

因为 0.9-0.1 = 0.8 是集合 seq(-1,1,0.1) 中 i,j 中最大的。`

mean_bound

mean_bound 是一个函数,它接受两个字符串并将它们转换为数字。之后,它计算这些平均值,如果它小于 0.3,则返回 1,否则返回 0。在我们的示例中:

  mean_bound(find_max(0.1)) 

它是mean_bound("0.9 0.1") 的等效形式。它返回 0,因为mean(c(0.9,0.1))=0.5&gt;0.3

所以我正在寻找的是使用函数find_max 找到最大值,但条件是mean_bound 给出1。

所以find_mean_bound_max(num = 0.1) 的输出应该是 '0.4 0.1' 因为

(1) 差等于0.4 - 0.1 = 0.3

(2) 意思是(0.4 + 0.1)/2 = 0.25 &lt; 0.3

希望现在它对你来说更干净了!

【问题讨论】:

  • 我不清楚您的 find_maxmean_bound 函数在做什么。您是否愿意接受不使用您编写的功能的解决方案?如果是,您能否提供 4-5 个示例输入及其对应的输出?
  • 嘿@RonakShah 非常感谢您的评论。我非常喜欢使用 find_max 和 mean_bound 的解决方案。我更新了我的问题以更清楚。如果您有任何问题,请告诉我!

标签: r string max


【解决方案1】:

简单使用:

find_max <- function(num) {
  vec <- c()
  t <- seq(0.1,0.9,num)
    for (i in 1:length(t)) {
      for (j in 1:length(t)) {
        if (mean(c(t[i],t[j]))<0.3){
        vec <- append(vec, setNames(((i-j)/2),paste('i'=t[i],'j'=t[j])))}
      }
    }
  names(which.max(vec))
}

find_max(0.1) 
"0.4 0.1"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-26
    • 2016-11-02
    • 2013-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多