【问题标题】:R - meet the condition then continue loop, otherwise repeatR - 满足条件则继续循环,否则重复
【发布时间】:2018-09-09 02:16:07
【问题描述】:

我现在有一个向量 x,我想创建另一个向量 y。它的作用是通过将 x 值与特定值(例如 30)进行比较,将 x 分成许多组。

这里是向量x:

x <- c(1,2,5,34,21,6,0,56,77,21,3,0)

如果用循环和条件语句来描述这个问题,我认为是:

当条件满足时,继续循环,否则重复。

例如,在向量x中,1、2、5小于30,所以“1”在y中重复了3次; 34大于30,所以循环继续到2的值,21小于30,所以“2”重复1次,以此类推。

y的最终值应该是这样的:

y <- c(1,1,1,2,2,2,2,3,4,4,4,4)

也许我的表达不是很清楚,因为我是一个非英语母语的人,现在我有点困惑,希望有人能帮助我。

【问题讨论】:

  • 小于30的每个数字应该重复多少次?
  • 正如@RonakShah 的回答所表明的那样,在 R 中,通常您可能用循环描述的行为最好使用对象的结构来生成:)
  • 其实重复次数对应的是满足条件的值的个数(小于30)。比如1,2,5对应1,1,1,或者21,6, 0 对应 2,2,2。 @hpesoj626
  • 我很难理解,但你是对的。@DanHall

标签: r loops conditional


【解决方案1】:

我们可以在这里使用cumsum,并在每次找到大于30的值时增加计数。

cumsum(x > 30) + 1
#[1] 1 1 1 2 2 2 2 3 4 4 4 4

【讨论】:

  • 啊。我之前尝试过cumsum,但没有尝试x&gt;30
猜你喜欢
  • 2017-02-03
  • 1970-01-01
  • 2022-06-15
  • 2012-09-16
  • 2020-11-29
  • 1970-01-01
  • 1970-01-01
  • 2017-05-31
  • 2021-03-11
相关资源
最近更新 更多