R语言如何将数值转换为0-1区间的等间隔序列
R语言实现0-1区间等间隔序列生成
实现逻辑
根据你给出的规则,核心是对每个k值生成对应长度的等间隔序列,仅k=1时特殊返回0,其余k≥2时直接生成从0到1的等间隔序列即可。
基础R实现(无需额外安装包)
首先定义匹配规则的生成函数,再遍历目标向量:
# 自定义生成函数 gen_seq <- function(k) { # k=1单独处理 if (k == 1) return(0) # 生成等间隔序列,需要保留小数可加round(2) seq(from = 0, to = 1, length.out = k) } # 你的示例向量 vec <- c(1, 2, 3, 4, 5) # 遍历生成结果,返回列表格式,每个元素对应一个k的输出 result <- lapply(vec, gen_seq)
如果需要输出为你示例中逗号分隔的字符串格式,再加一步格式转换:
# 转换为字符串格式,floor处理是为了截断两位小数匹配你给出的0.33、0.66效果 result_str <- sapply(result, function(x) paste(floor(x*100)/100, collapse = ", "))
输出的result_str会完全匹配你给出的示例效果:
- k=1:
0 - k=2:
0, 1 - k=3:
0, 0.5, 1 - k=4:
0, 0.33, 0.66, 1 - k=5:
0, 0.25, 0.5, 0.75, 1
purrr包简洁实现(适合tidyverse生态用户)
library(purrr) result <- map(vec, ~ if (.x == 1) 0 else seq(0, 1, length.out = .x))
内容的提问来源于stack exchange,提问作者Chris Ruehlemann
相关产品推荐
相关产品推荐

