在R中使用索引获取向量的两个中间值(适配任意向量长度)
R语言:通过纯索引实现任意长度向量的中间值获取
实现要求
- 仅可通过**索引(INDEXING)**逻辑实现,禁止硬编码位置
- 代码需适配任意长度的向量:偶数长度返回两个中间位置值,奇数长度返回单个中间位置值
- 测试用向量为
c(59, 46, 76, 60, 49, 65, 82, 68, 99, 52),期望输出为49 65
实现代码
# 定义输入向量 input_vec <- c(59, 46, 76, 60, 49, 65, 82, 68, 99, 52) # 计算向量长度 vec_length <- length(input_vec) # 自动计算中间位置索引,适配奇偶长度 mid_index <- if (vec_length %% 2 == 0) { c(vec_length/2, vec_length/2 + 1) } else { (vec_length + 1)/2 } # 纯索引获取中间值 mid_values <- input_vec[mid_index] # 打印输出 mid_values
运行输出
[1] 49 65
拓展说明
如果需要获取排序后向量的中间值(即中位数对应的取值),仅需调整索引取值步骤的代码为:
mid_values <- sort(input_vec)[mid_index]
即可满足需求,不需要修改其他逻辑。
内容的提问来源于stack exchange,提问作者muneeb khan
相关产品推荐
相关产品推荐

