楼主: bob_hai
1539 8

[问答] 一个程序上的小问题 [推广有奖]

  • 2关注
  • 1粉丝

VIP

博士生

26%

还不是VIP/贵宾

-

威望
0
论坛币
342 个
通用积分
0
学术水平
6 点
热心指数
1 点
信用等级
0 点
经验
23225 点
帖子
106
精华
0
在线时间
414 小时
注册时间
2008-3-14
最后登录
2014-6-25

楼主
bob_hai 发表于 2011-9-29 11:28:11 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
有个数字序列,例如:1,2,3,4,5,6,7,3,4,5,6
不知道有没有不用循环判断来取出最后的3,4,5,6


二维码

扫码加我 拉你入群

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

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

关键词:小问题 不知道 有没有 程序

沙发
dairjordan 发表于 2011-9-29 11:30:41
判断的标准时什么了?

藤椅
dairjordan 发表于 2011-9-29 11:31:18
是取后几个还是与前面重复的数字段了?

板凳
bob_hai 发表于 2011-9-29 12:51:19
判断的标准就是取突然变小以后的数字序列
因为此序列为两段递增序列,但是在两段衔接处
数值是突然变小了,我就是要取出这个节点的位置
从而把这段数字序列分为两段,其实用循环判断的话
是可以实现的,不过因为实际上数据量极大, 这样做
效率很低

报纸
shenbaiseshatan 在职认证  发表于 2011-9-29 15:09:30
也提供一种思路吧
  1. a<-c(1:10,2:5)
  2. la<-length(a)
  3. a[(which(a[-1]<a[-la])+1):la]
复制代码

已有 1 人评分热心指数 收起 理由
UNC + 1 热心帮助其他会员

总评分: 热心指数 + 1   查看全部评分

胜人者有力,自胜者强!

地板
qoiqpwqr 发表于 2011-9-29 21:08:58
bob_hai 发表于 2011-9-29 12:51
判断的标准就是取突然变小以后的数字序列
因为此序列为两段递增序列,但是在两段衔接处
数值是突然变小了 ...
和楼上一样,不过可以用diff函数
a[(which(diff(a) < 0)[1]+1) : la]
已有 1 人评分热心指数 收起 理由
UNC + 1 热心帮助其他会员

总评分: 热心指数 + 1   查看全部评分

7
shenbaiseshatan 在职认证  发表于 2011-9-29 22:35:19
qoiqpwqr 发表于 2011-9-29 21:08
和楼上一样,不过可以用diff函数
a[(which(diff(a) < 0)[1]+1) : la]
用diff看起来更漂亮
胜人者有力,自胜者强!

8
davidhaitaopan 发表于 2011-9-30 11:36:02
还可以这样,a[(which.min(diff(a)<0)+1):la]

9
bob_hai 发表于 2011-9-30 12:22:47
谢谢大家了, 真是众人堆柴火焰高啊

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

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