【问题标题】:Divide numbers into equally-spaced intervals ranging between 0-1将数字划分为 0-1 之间的等距间隔
【发布时间】:2021-09-27 13:20:51
【问题描述】:

假设我在一个向量中有这一系列数字:

vec <- c(1,2,3,4,5)           # just an example, numbers could be far higher

如何以编程方式将这些数字划分为0-1 之间的等距间隔,这样我得到:

  • 1:0
  • 2:0, 1
  • 3:0, 0.5, 1
  • 4:0, 0.33, 0.66, 1
  • 5:0, 0.25, 0.50, 0.75, 1
  • 等等。

有什么想法吗?

【问题讨论】:

  • 也许:seq(0, 1, length.out = 5) ?试试看:lapply(1:5, function(i) seq(0, 1, length.out = i))
  • 您是在问“我如何找到最大值,然后将其除以间隔数”还是在问“'r' 是否已经具备一些功能可以做到这一点”?
  • @zx8754 为什么不将其发布为答案以便我接受?
  • 很确定这是重复的,找不到正确的目标...在下面发布了答案。
  • Google 向我发送了您自己的旧问题,该问题有一个带有 length.out 的解决方案 :) stackoverflow.com/q/64078958/680068 仍然找不到正确的欺骗,这些东西很难用谷歌搜索。

标签: r calculation


【解决方案1】:

我们可以使用 seqlength.out 参数:

lapply(1:5, function(i) seq(0, 1, length.out =  i))
# [[1]]
# [1] 0
# 
# [[2]]
# [1] 0 1
# 
# [[3]]
# [1] 0.0 0.5 1.0
# 
# [[4]]
# [1] 0.0000000 0.3333333 0.6666667 1.0000000
# 
# [[5]]
# [1] 0.00 0.25 0.50 0.75 1.00

映射

mapply(seq, from = 0, to = 1, length.out = 1:5)

【讨论】:

    【解决方案2】:

    如果我理解得很好,可能是这样的:

    v <- 1:5
    norm <- function(x){
      if(length(x)==1)0 else{
        (x-min(x))/(max(x)-min(x))
      }
      }
    lapply(v, function(x)(norm(seq(1,x,length.out = x))))
    

    输出

    [[1]]
    [1] 0
    
    [[2]]
    [1] 0 1
    
    [[3]]
    [1] 0.0 0.5 1.0
    
    [[4]]
    [1] 0.0000000 0.3333333 0.6666667 1.0000000
    
    [[5]]
    [1] 0.00 0.25 0.50 0.75 1.00
    

    【讨论】:

    • 是的,很好,但是来自@zx8754 的lapply(1:5, function(i) seq(0, 1, length.out = i)) 可以工作并且更简洁!
    【解决方案3】:

    使用map

    library(purrr)
    map(1:5, ~ seq(0, 1, length.out = .x))
    

    -输出

    [[1]]
    [1] 0
    
    [[2]]
    [1] 0 1
    
    [[3]]
    [1] 0.0 0.5 1.0
    
    [[4]]
    [1] 0.0000000 0.3333333 0.6666667 1.0000000
    
    [[5]]
    [1] 0.00 0.25 0.50 0.75 1.00
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-23
      • 2016-08-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多