【发布时间】:2013-01-06 19:34:57
【问题描述】:
我在 R 中有一个百分比变化的动物园对象。我想从 1 或 100 开始复合这些百分比变化,看看我们是否复合了膨胀/衰减。
Lines <- "obs date pctchng comgrowth
1 2010-10-04 NA 100
2 2010-10-01 .15 NA
3 2010-09-30 .14 NA
4 2010-09-29 -.05 NA
5 2010-09-28 -.12 NA
6 2010-09-27 .07 NA
7 2010-09-24 -.15 NA
8 2010-09-23 .186 NA
9 2010-09-22 .01 NA
10 2010-09-21 .03 NA
11 2010-09-20 -.03 NA"
data <- read.zoo(textConnection(Lines), header=TRUE, index=2)
startobs <- 1
for (i in 1:100) {
data[startobs+i,"comgrowth"] <- data[startobs+i-1,"comgrowth"] *
(1+data[startobs+i,"pctchng"])
}
我正在简化数据以使其易于显示,但这是我正在尝试做的想法。我意识到问题出在加/减/除/乘时。出于某种原因,我可以说data[startobs+i,"comgrowth"]=data[startobs+i-1,"comgrowth"] 但是......
我不能说data[startobs+i,"comgrowth"]=data[startobs+i-1,"comgrowth"]+data[startobs+i-2,"comgrowth"]。 R 不会让我添加 +/-/* 等并给我这个错误
Error in NextMethod("[<-") : replacement has length zero
这是一个语法问题,纯粹而简单。有谁知道我做错了什么?
【问题讨论】:
-
starobs 只是一个观察点。在这种情况下 startobs=1
-
startobs+i在某个时候将是 101。语义问题。 -
这不是问题,我的数据集很大。 Startobs 不是问题,而是 +/-/* 。为什么 R 不让我这样做?
-
您只能通过发布可重现的代码来说服我们。使用 dput 并定义一切。