显然,我正试图用正索引和“负索引”来子集我的变量。无论如何调试代码,我不明白为什么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]
中的非负子设置
如果有帮助,只需要更多信息:如果我使用两个"or“运算符而不是一个,例如:
if (stepcount > 192 || sum(na.omit(ppt[i-193:i-1])) < 0.6) {statement}
我仍然得到同样的错误,但在我是3603。老实说,我不知道有什么不同,但它可能传达了某种信息,可以澄清问题。
我认为这可能是一件我不知道的简单事情,而且可重现的代码将不是必要的(因为它对于分析大型数据来说是一个太长的代码。不过,如果你们觉得有必要的话,我可以把它贴出来。
发布于 2014-07-10 10:10:12
正如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 ...
发布于 2014-07-09 04:14:10
我认为你想要:
ppt[i - 193:(i - 1)]
否则,当i> 193时,列表中有-1,当i>194时,列表中有正、负和0条目:
195 - 193:195 - 1
## [1] 1 0 -1
https://stackoverflow.com/questions/24640888
复制相似问题