全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1405 3
2015-05-03
> 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”呢?
二维码

扫码加我 拉你入群

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

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

全部回复
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)
  }))
}
二维码

扫码加我 拉你入群

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

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

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

二维码

扫码加我 拉你入群

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

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

2015-5-5 03:23:32
你传个图别人run很麻烦啊,i=6的时候i+3的下标越界了
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群