楼主: shijianzhuyu14
1953 6

[问答] 执行条件语句时,显示替换长度为零,怎么解决 [推广有奖]

  • 3关注
  • 0粉丝

初中生

47%

还不是VIP/贵宾

-

威望
0
论坛币
31 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
501 点
帖子
10
精华
0
在线时间
15 小时
注册时间
2015-3-12
最后登录
2016-7-25

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
现在有以下程序:
已知
> ry2
   SHeader EHeader  Type
1        0       1          0
2        1       2          1
3        2       3          1
4        3       4          0
5        4       5          1
6        5       6          1
7        6       7          0
Si=ry2$SHeader
Ei=ry2$EHeader  
type=ry2$Type

sn=NULL
{if(is.logical(type[i]==type[i+1])){Si[i+1]=Si[i];sn[i]=0;sn[i+1]=1}
if(is.logical(type[i]!=type[i+1]&&type[i+1]!=type[i+2])) {sn[i+1]=2}
if(is.logical(type[1]!=type[2])) {sn[1]=type[1]}
sn[length(type)]=1
}
Si

sn
运行上述程序时,出现错误:“Error in Si[i + 1] = Si[i] : replacement has length zero”,一直没找到问题所在,各位大神麻烦帮忙解决一下,万分感谢!


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:replacement placement Logical replace length 程序

已有 1 人评分经验 论坛币 收起 理由
happy_287422301 + 100 + 20 鼓励积极发帖讨论

总评分: 经验 + 100  论坛币 + 20   查看全部评分

不忘初心,
沙发
bbslover 发表于 2016-7-23 19:50:07 |只看作者 |坛友微信交流群
你的·i·在吗?
已有 1 人评分论坛币 收起 理由
happy_287422301 + 20 鼓励积极发帖讨论

总评分: 论坛币 + 20   查看全部评分

使用道具

藤椅
shijianzhuyu14 发表于 2016-7-23 20:12:11 |只看作者 |坛友微信交流群
bbslover 发表于 2016-7-23 19:50
你的·i·在吗?
落下一条语句,完整的程序是下面的:
Si=ry2$SHeader
Ei=ry2$EHeader  
type=ry2$Type
sn=NULL
for(i in 1:length(ry2$Type)-1)
{if(is.logical(type==type[i+1])){Si[i+1]=Si;sn=0;sn[i+1]=1}
if(is.logical(type!=type[i+1]&&type[i+1]!=type[i+2])) {sn[i+1]=2}
if(is.logical(type[1]!=type[2])) {sn[1]=type[1]}
sn[length(type)]=1
}
Si
sn


i是存在的

使用道具

板凳
bbslover 发表于 2016-7-23 21:57:56 |只看作者 |坛友微信交流群
使用代码功能,就是"<>",再把你的code黏贴到这里,这样code就不会变得很难懂。发生来之后,在帮助你回答。

使用道具

报纸
bbslover 发表于 2016-7-23 22:26:43 |只看作者 |坛友微信交流群
type==type[i+1]  本身就有问题,  type是向量,type[i + 1]是标量,请仔细一点。还要就是把你想要的得到的说一下,is.logical(type[i] == type[i + 1]),不需要is.logical()函数,“==”返回值就是logical value (TRUE or FALSE)。祝你好运!

使用道具

地板
shijianzhuyu14 发表于 2016-7-24 15:20:57 |只看作者 |坛友微信交流群
bbslover 发表于 2016-7-23 22:26
type==type  本身就有问题,  type是向量,type是标量,请仔细一点。还要就是把你想要的得到的说一下,is.l ...
  1. > sn=NULL
  2. > type=ry2$Type
  3. > Si=ry2$SHeader
  4. > for(i in 1:length(ry2$Type)-1)
  5. + {if((type[i]==type[i+1])){Si[i+1]=Si[i];sn[i]=0;sn[i+1]=1}
  6. +  if((type[i]!=type[i+1]&&type[i+1]!=type[i+2])) {sn[i+1]=2}
  7. +  if((type[1]!=type[2])) {sn[1]=type[1]}
  8. +  sn[length(type)]=1
  9. +  }
  10. Error in if ((type[i] == type[i + 1])) { : argument is of length zero
复制代码
已知的ry2还是最上面的数据,想要实现的结果如下,将Type相同的相邻数据段合并并筛选出来:
  SHeader EHeader  Type
1       0       1          0
2        1       2          1
3       1       3          1
4        3       4          0
5        4       5          1
6        4       6          1
7        6       7          0
运行时一直出现错误,是否可以帮忙解决,万分感谢!

使用道具

7
shijianzhuyu14 发表于 2016-7-24 16:38:14 |只看作者 |坛友微信交流群
bbslover 发表于 2016-7-23 22:26
type==type  本身就有问题,  type是向量,type是标量,请仔细一点。还要就是把你想要的得到的说一下,is.l ...
问题已经解决,谢谢

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-25 07:04