【问题标题】:Calculating relative difference to the first element in a vector计算向量中第一个元素的相对差异
【发布时间】:2012-11-08 11:54:33
【问题描述】:

我有许多如下形式的向量:

vector1 <- c(42.000, 40.781, 40.625, 40.312, 40.375, 40.344, 39.531, 39.875, 40.344, 39.500, 39.125, 39.062, 39.656)

vector2 <- c(24.625, 25.625, 24.844, 25.250, 26.250, 26.344, 26.250, 26.375, 26.250, 25.812, 27.000, 26.469, 26.781)

我想把它们放在一个共同的基础上,从 100 开始作为第一个值,并为每个新值取第一个值和新值之间的差。

我使用了以下代码:

i=13 

for (1 in 1:13) {

vector1[i]=(vector1[i]-vector1[i-1])

我做错了什么?

【问题讨论】:

  • 你应该阅读并理解?"for"
  • 亲爱的@dbr,请不要在简历上问你的 R 问题——这是适合他们的地方。

标签: r


【解决方案1】:

不清楚,你想要实现什么。 “从 100 开始作为第一个值”是什么意思?

这给出了所有元素与第一个元素的差异:

vector1 <- c(42.000, 40.781, 40.625, 40.312)
vector1-vector1[1]
#[1]  0.000 -1.219 -1.375 -1.688

这给出了第一个元素除以第一个元素的差:

(vector1-vector1[1])/vector1[1]
#[1]  0.00000000 -0.02902381 -0.03273810 -0.04019048

这给出了后续元素之间的差异:

diff(vector1)
#[1] -1.219 -0.156 -0.313

【讨论】:

  • 是的,我想将所有元素与第一个元素的差异除以第一个元素,以获得绝对差异,但我想对所有值都这样做,所以我会需要一个循环
  • @dbr 您不需要循环,因为 R 是矢量化的。我添加了一个关于如何计算与第一个元素的相对差异的示例。
猜你喜欢
  • 1970-01-01
  • 2018-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-09
  • 1970-01-01
  • 2016-12-30
  • 1970-01-01
相关资源
最近更新 更多