首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >R: Err:只有0可以与负下标混合

R: Err:只有0可以与负下标混合
EN

Stack Overflow用户
提问于 2014-07-09 04:10:03
回答 2查看 12K关注 0票数 1

显然,我正试图用正索引和“负索引”来子集我的变量。无论如何调试代码,我不明白为什么R studio将其解释为我混合了负子集和正子集。

以下是代码的一部分:

代码语言:javascript
代码运行次数:0
运行
复制
 if (stepcount > 192 | sum(na.omit(ppt[i-193:i-1])) < 0.6) {statement}

错误:

代码语言:javascript
代码运行次数:0
运行
复制
Error in ppt[i - 193:i - 1] : 
  only 0's may be mixed with negative subscripts

调试代码时,我看到此时i的值是3572,这意味着ppt[i - 193:i - 1]中的非负子设置

如果有帮助,只需要更多信息:如果我使用两个"or“运算符而不是一个,例如:

代码语言:javascript
代码运行次数:0
运行
复制
if (stepcount > 192 || sum(na.omit(ppt[i-193:i-1])) < 0.6) {statement}

我仍然得到同样的错误,但在我是3603。老实说,我不知道有什么不同,但它可能传达了某种信息,可以澄清问题。

我认为这可能是一件我不知道的简单事情,而且可重现的代码将不是必要的(因为它对于分析大型数据来说是一个太长的代码。不过,如果你们觉得有必要的话,我可以把它贴出来。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-10 10:10:12

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

代码语言:javascript
代码运行次数:0
运行
复制
if (stepcount > 192 | sum(na.omit(ppt[(i-193):(i-1)])) < 0.6) {statement}

示例:

代码语言:javascript
代码运行次数:0
运行
复制
> 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 ...
票数 2
EN

Stack Overflow用户

发布于 2014-07-09 04:14:10

我认为你想要:

代码语言:javascript
代码运行次数:0
运行
复制
ppt[i - 193:(i - 1)]

否则,当i> 193时,列表中有-1,当i>194时,列表中有正、负和0条目:

代码语言:javascript
代码运行次数:0
运行
复制
195 - 193:195 - 1
## [1]  1  0 -1
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24640888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档