R:错误:只有0可以与负下标混合

时间:2014-07-08 20:10:03

标签: r subset

显然我正在尝试使用正面和#34;负面索引"对我的变量进行子集化。然而调试代码,我不能为什么R studio正在解释它,因为我正在混合负面和正面子集。

以下是代码的一部分:

 if (stepcount > 192 | sum(na.omit(ppt[i-193:i-1])) < 0.6) {statement}

错误:

Error in ppt[i - 193:i - 1] : 
  only 0's may be mixed with negative subscripts

调试代码我看到此时我对i的值是3572,这意味着ppt[i - 193:i - 1]

中的负子集也没有

如果它有帮助,只需要更多信息:如果我使用两个&#34;或&#34;运算符而不是一个,如:

if (stepcount > 192 || sum(na.omit(ppt[i-193:i-1])) < 0.6) {statement}

我仍然得到同样的错误,但在我3603。老实说,我不知道差异,但可能是它传达了一些可以澄清问题的信息。

我认为这可能是一个我不知道的简单事情,而且可重复的代码不是必需的(因为分析大数据的代码太长了。但是我可以发布它,如果你人们认为这是必要的。

2 个答案:

答案 0 :(得分:3)

我想你想要:

ppt[i - 193:(i - 1)]

否则,当i&gt;时,列表中的-1为-1当i> 1时,以及正,负和0条目。 194:

195 - 193:195 - 1
## [1]  1  0 -1

答案 1 :(得分:2)

正如Richard Scriven所建议并由jlhoward解释的那样,解决方案是将子集放在括号中:

if (stepcount > 192 | sum(na.omit(ppt[(i-193):(i-1)])) < 0.6) {statement}

示例:

> k <- seq(from=1,to=1000,by=2)
> i <- 195
> k[(i - 193):(i - 1)]
  [1]   3   5   7   9  11  13  15  17  19  21  23  25  27  29
 [15]  31  33  35  37  39  41  43  45  47  49  51  53  55 ...