如何对向量的子集进行操作?

罗伯·拉瑟姆(Rob Latham)

我理解如何对整个向量进行操作,尽管我认为这不是惯用的Rust:

fn median(v: &Vec<u32>) -> f32 {
    let count = v.len();
    if count % 2 == 1 {
        v[count / 2] as f32
    } else {
        (v[count / 2] as f32 + v[count / 2 - 1] as f32) / 2.0
    }
}

fn main() {
    let mut v1 = vec![3, 7, 8, 5, 12, 14, 21, 13, 18];
    v1.sort();
    println!("{:.*}", 1, median(&v1));
}

但是,如果我只想对该向量的一半进行操作,该怎么办?例如,第一个四分位数是下半部分的中位数,而第三个四分位数是上半部分的中位数。我的第一个想法是构造两个新的向量,但这似乎不太正确。

如何获得向量的“一半”?

谢泼玛特

如前所述,您想使用带有trait的特征来创建切片IndexRange

let slice = &v1[0..v1.len() / 2];

这是不鼓励接受的&Vec另一个原因当前代码将需要将切片转换为分配的Vec而是重写它以接受切片:

fn median(v: &[u32]) -> f32 {
    // ...
}

由于您可能有兴趣将向量/切片分为两半并同时获得两部分,因此split_at可能是相关的:

let (head, tail) = v1.split_at(v1.len() / 2);
println!("{:.*}", 1, median(head));
println!("{:.*}", 1, median(tail));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用向量对数据帧列表进行子集

如何在列表列表中对向量进行子集

如何使用大字符向量对矩阵进行子集

如何对 chrome.storage 数据的子集进行操作

如何以表示 R 中原始向量一般形状的方式对向量进行子集化

如何基于向量对数据帧进行子集化,然后在dplyr中进行分组

Spark Scala中向量的子集操作

如何对名称列在向量中的数据集进行操作?

在 R 中,如何根据向量中的值对数据帧的行进行子集

如何基于R中列向量的升序/降序对列表进行子集

R - 如何根据条件向量对存储在列表中的所有数据帧进行子集

如何使用R中的字符串向量对data.table进行子集化

如何在Rcpp中对bigstatsr :: FBM的行或列进行子集并将其存储在向量中?

如何对字符向量中的所有整数和/或数值进行子集化?

如何根据二进制向量中的元素对数据框中的列进行子集

如何使用不同大小的向量对操作进行向量化

如何在熊猫数据帧上的行子集上进行操作?

如何按日期对数据进行子集化并在R中执行多项操作?

如何获得向量的所有连续子集?

向量的子集

如何检测一个向量是特定向量的子集?

根据向量列表对数据帧进行子集化

使用向量作为参数对数据帧进行子集化

用数值向量对data.frame进行子集化

Basic R:使用逻辑向量按列对DF进行子集

使用带有$的逻辑向量对数据帧进行子集

对每对向量元素进行类似扫描的操作

如何向量化此操作

如何有效地对data.table中的向量列进行操作