通过重采样调整向量大小

标签 r vector resize resampling

我遇到以下问题,这不完全是编程问题,但我希望有一个编程解决方案。我正在使用 R。

考虑以下向量

v <- c(2,3,6,1)

我希望将其调整为任意大小,但 sum(v) 应保持不变。实际上,我想拉伸(stretch)向量。例如,乘以因子 2:

v2 <- c(1,1,1.5,1.5,3,3,0.5,0.5)

当新向量是旧向量的倍数时,我们只需将元素相除即可。但是,它也应该适用于不是原始向量大小倍数的其他大小,例如150.

我想我可以使用线性插值之类的方法来实现此目的,但我现在想不出一个简单的解决方案。

最佳答案

好的,刚刚找到解决方案。我是 R 和数学新手;)

v <- seq(1,10)

这通过插入值来调整向量的大小:

v2 <- approx(v, n=33)$y

接下来,我们标准化以保留总和:

norm <- sum(v)/sum(v2)
v3 <- v2 * norm

在此示例中,v3 将是

 [1] 0.3030303 0.3882576 0.4734848 0.5587121 0.6439394 0.7291667 0.8143939
 [8] 0.8996212 0.9848485 1.0700758 1.1553030 1.2405303 1.3257576 1.4109848
 [15] 1.4962121 1.5814394 1.6666667 1.7518939 1.8371212 1.9223485 2.0075758
 [22] 2.0928030 2.1780303 2.2632576 2.3484848 2.4337121 2.5189394 2.6041667
 [29] 2.6893939 2.7746212 2.8598485 2.9450758 3.0303030

关于通过重采样调整向量大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24162732/

相关文章:

调整/放大数组并在 R 中填充 NA

R Markdown : Why R Studio can't locate my .围兜文件?

python - 比较向量列表

C++ 11查找总和>阈值的 vector 的最短前缀的方法

r - 用另一个向量子集化一个向量

r - 向图像/轮廓图添加点画

c++ - 在基于范围的循环与标准循环中删除 vector 元素

javascript - jQuery - 如何知道窗口是否正在调整宽度/高度或两者?

winforms - 调整面板大小以适应 Windows 窗体中包含的元素

qt - Qt 中的样式表、隐藏的小部件和大小