楼主: athenachuxl
1371 3

[问答] 关于循环next的问题 [推广有奖]

  • 0关注
  • 0粉丝

高中生

72%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
201 点
帖子
17
精华
0
在线时间
27 小时
注册时间
2011-10-10
最后登录
2019-11-4

楼主
athenachuxl 发表于 2015-5-3 20:42:52 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
> p
[1]  1  2  3  4  5  6  7  8  9 10
> continuous
function(x) {
  v<-NULL
  for (i in seq())
    {
    if ((x[i]+1)!=x[i+1])next
        if ((x[i]+2)!=x[i+2]) next
    if ((x[i]+3)!=x[i+3]) next
    if ((x[i]+4)!=x[i+4])next
    v<-rbind(v,i)
  }
  return(v)
  }
> continuous(p)
  [,1]
i    1

目标是想识别出连续4个数的值都为1的位置,比如1的后面如果是2,6,7,8就不行,如果是2,3,4,5就可以返回。按理输入p后continuous(p)之后返回 1 2 3 4 5 6的,但是为什么只返回“1”呢?
二维码

扫码加我 拉你入群

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

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

关键词:Next ext Continuous function con

沙发
prunusis 发表于 2015-5-4 02:46:47
i in seq()
这里错了
continuous = function(x) {
  if (length(x) < 4) {
    return(NULL)
  }
  d = diff(x)
  which(sapply(1:(length(x) - 3), function(i) {
    all(d[i + (0:3)] == 1)
  }))
}

藤椅
athenachuxl 发表于 2015-5-4 10:45:52
prunusis 发表于 2015-5-4 02:46
i in seq()
这里错了
continuous = function(x) {
真的非常感谢!还想问一下,为什么按下面这么做的话会显示逻辑值是缺失的呢?


1.png

1.png (5.54 KB)

1.png

板凳
prunusis 发表于 2015-5-5 03:23:32
你传个图别人run很麻烦啊,i=6的时候i+3的下标越界了

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 06:27