R NextMethod(“[<;-”)中出错:下标超出范围

R NextMethod(“[<;-”)中出错:下标超出范围,r,R,我在R中加载了一个zoo类数据集,我试图为循环运行一个,但我一直遇到错误 下一个方法出错(“[您的意思是: for (i in 1:NROW(data)) { data[i, "dummy"] = i } 但是,无论您在for循环中尝试做什么,使用矢量化解决方案可能会更容易,例如使用ifelse您的意思是: for (i in 1:NROW(data)) { data[i, "dummy"] = i } 然而,无论您在for循环中尝试做什么,使用矢量化解决方案可能会更容易,例

我在R中加载了一个zoo类数据集,我试图为循环运行一个
,但我一直遇到错误

下一个方法出错(“[您的意思是:

for (i in 1:NROW(data)) {
    data[i, "dummy"] = i
}
但是,无论您在for循环中尝试做什么,使用矢量化解决方案可能会更容易,例如使用
ifelse
您的意思是:

for (i in 1:NROW(data)) {
    data[i, "dummy"] = i
}

然而,无论您在for循环中尝试做什么,使用矢量化解决方案可能会更容易,例如使用
ifelse

为什么伪变量在for循环中称为
dummyvariable
,在显示中称为
dummy
,在
dput
中完全不存在?还有,您为什么要做
length(数据)
(48)而不是
NROW(数据)
(6)?您在循环中实际想做什么?很抱歉进行了编辑。我只是尝试循环“虚拟”中的每个元素“变量并放置一个值,该值将根据条件if语句而变化。我删除了if语句,因为它们不是问题所在。这是代码的startobs+I部分。是否还要循环遍历数据集中的每个元素/观察值?我想您只需要对(I in 1:NROW(data)){data[I,“dummy”]=I}执行
。如果
data[,“dummy”]=1:NROW(data),则可以更轻松、更高效地完成此操作
,但我知道这只是一个玩具示例。然而,无论您尝试做什么,使用矢量化解决方案可能会比使用for循环做得更好。也许您可以分享您的目标是什么?但这不仅仅是缺少变量-还有全新的变量
obs
日期
,以及(最重要的是)
dummy
。重量在完全不同的刻度上(~52000而不是~100)。如果
dput
和问题的其余部分之间唯一共享的东西是单个列的名称,那么为什么要使用
dput
?为什么在for循环中称为
dummyvariable
,在显示中称为
dummy
,在
dput
中完全不存在?还有,为什么要执行
length(数据)
(48)而不是NROW(数据)
(6)?您在循环中实际想做什么?抱歉进行了编辑。我只是尝试循环“虚拟”中的每个元素变量并放置一个值,该值将根据条件if语句的不同而变化。我删除了if语句,因为它们不是问题所在。这是代码的startobs+I部分。是否仍要循环遍历数据集中的每个元素/观察值?我想您只需要对(I in 1:NROW(data)){data[I,“dummy”]=I}执行
。如果
data[,“dummy”]=1:NROW(data),则可以更轻松、更高效地完成此操作
,但我知道这只是一个玩具示例。然而,无论您尝试做什么,使用矢量化解决方案可能会比使用for循环做得更好。也许您可以分享您的目标是什么?但这不仅仅是缺少变量-还有全新的变量
obs
日期
,以及(最重要的是)
dummy
。权重是在一个完全不同的尺度上(~52000而不是~100)。如果
dput
和问题的其余部分之间唯一共享的东西是单个列的名称,那么为什么要使用
dput
?@Arun:请参阅上面对问题的评论(我还注意到这与
1:nrow(数据)相同)
。OP注意到这只是一个玩具示例,其他一些计算正在进行for循环(因此我提供了这个示例来解释玩具示例的工作原理)。我在评论和我的回答中都注意到,矢量化解决方案可能更优。@Arun:请参阅上面问题的评论(我还注意到这与
1:nrow(data)
相同。OP注意到这只是一个玩具示例,其他一些计算正在进行中(因此我提供了这个来解释玩具示例是如何工作的)。我在评论和回答中都注意到,矢量化解决方案可能更优越。
>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")
for (i in 1:NROW(data)) {
    data[i, "dummy"] = i
}