使用R计算矩阵中值的标准化差异

时间:2012-11-15 13:58:29

标签: r matrix

我有一个由116列和4700行组成的大矩阵。

对于每一行,我想计算以下形式的标准化差异:

(((a2-a1)/a1)*100)+100, where a1 is the previous value and a2 is the next value.

在R中我使用以下代码:

for i in (1:116)

a[i]=(((a[i]-a[i-1])/a[i-1])*100)+100

但是我收到以下错误:

Error in Ops.data.frame(a[i], a[i - 1]) : 
- only defined for equally-sized data frames

我猜测问题是它没有考虑第一个值,其中没有第一个值-1来减去。

我该如何解决这个问题?

以下是数据的子集:https://dl.dropbox.com/u/22681355/su.csv

请记住,我想单独计算每一列!

1 个答案:

答案 0 :(得分:1)

您的问题可以使用reproducible example来使其更清晰。例如,您说您有一个矩阵,但随后显示与数据帧相关的错误。如果不知道您的数据是什么样的,我们就无法知道答案是否正确。

但无论如何,我认为你可以在没有循环的情况下做到这一点。

# Example data:
foo <- data.frame(A = 1:10, B = rnorm(10))

# Compute standardized differences:
(foo[-1,] - foo[-nrow(foo),]) / foo[-nrow(foo),] * 100 + 100