我将一个动物园类数据集加载到R中,我正在尝试运行for
循环。但我一直遇到错误
NextMethod中的错误(“[< - ”):下标超出范围。
循环非常简单
startobs=5
for (i in startobs:(NROW(data)-startobs)) {
data[startobs+i,"dummy"]=startobs+i
}
我认为问题出在startobs+i
。当你经历每个元素时,R似乎不喜欢将循环的索引(i
)放在data[i,]
中。我究竟做错了什么?
数据结构如下
>data
obs date weight dummy
1 2010-10-04 52495 NA
2 2010-10-01 53000 NA
3 2010-09-30 52916 NA
4 2010-09-29 52785 NA
5 2010-09-28 53348 NA
6 2010-09-27 52885 NA
7 2010-09-24 52174 NA
8 2010-09-23 51461 NA
9 2010-09-22 51286 NA
10 2010-09-21 50968 NA
11 2010-09-20 49250 NA
和
>dput(head(data))
structure(c(100, 101.01, 110.75, 111.24, 104.96, 104.95, 104.06,
109.08, 113.48, 111.6, 108, 107.95, 95.96, 100.5, 109.05, 103.57,
103.88, 104.66, 100.34, 108.31, 109.4, 104.87, 106, 107.91, 22351900,
11428600, 9137200, 7631300, 4598900, 3551000, 100.34, 108.31,
109.4, 104.87, 106, 107.91, NA, NA, NA, NA, NA, NA), .Dim = 6:7, .Dimnames = list(
NULL, c("weight", "height", "BMI", "Age", "Age2", "Intr",
"Chol")), index = structure(c(12649, 12650, 12653, 12654,
12655, 12656), class = "Date"), class = "zoo")
答案 0 :(得分:4)
你的意思是:
for (i in 1:NROW(data)) {
data[i, "dummy"] = i
}
然而,无论你在for循环中尝试做什么,使用矢量化解决方案可能会更容易,例如使用ifelse
的解决方案。