如何找出R中的值序列
假设我已经从-100到100生成了100个不同的值,我有如何找出R中的值序列,r,R,假设我已经从-100到100生成了100个不同的值,我有cumsum所有这些值 set.seed(123) x <- -100:100 z <- sample (x, size = 100,replace=T) cumsum(z) 现在,我想停止或找出大于200或小于-200的值 如果我用手去做,我知道第五个序列(212)大于200 然而,在R中,是否有任何命令可以确定z第一次大于200或小于-200 非常感谢一种快速的黑客方法可能是: z <- as.data.frame(
cumsum
所有这些值
set.seed(123)
x <- -100:100
z <- sample (x, size = 100,replace=T)
cumsum(z)
现在,我想停止或找出大于200或小于-200的值
如果我用手去做,我知道第五个序列(212)大于200
然而,在R中,是否有任何命令可以确定z第一次大于200或小于-200
非常感谢一种快速的黑客方法可能是:
z <- as.data.frame(z)
z$lv <- if_else(z >200,T,F)
min(which(lv == TRUE))
z实现这一点的快速黑客方法可能是:
z <- as.data.frame(z)
z$lv <- if_else(z >200,T,F)
min(which(lv == TRUE))
z其他人提供的min(其中(…)
解决方案在任何值都不满足条件的情况下都不能给出方便的答案。比如说,
set.seed(123)
x[1]5
最小值(其中(abs(cumsum(z))>1000))#无一符合此条件
#>最小值警告(其中(abs(cumsum(z))>1000)):最小值没有非缺失参数;
#>返回Inf
#>[1]Inf
关于which.max
,R帮助页面中给出了更好的方法:
match(TRUE,abs(总和(z))>200)
#> [1] 5
匹配(正确,绝对值(总和(z))>1000)
#>[1]NA
如果任何值都不满足条件,则其他人提供的min(其中(…)
解决方案不会给出方便的答案。比如说,
set.seed(123)
x[1]5
最小值(其中(abs(cumsum(z))>1000))#无一符合此条件
#>最小值警告(其中(abs(cumsum(z))>1000)):最小值没有非缺失参数;
#>返回Inf
#>[1]Inf
关于which.max
,R帮助页面中给出了更好的方法:
match(TRUE,abs(总和(z))>200)
#> [1] 5
匹配(正确,绝对值(总和(z))>1000)
#>[1]NA
min(其中(abs(cumsum(z))>200))
谢谢您的回复。我认为这是一个发现z>200的好方法。然而,由于存在两种情况z>200或z<负200。如果我们使用abs,负值将返回正值。因此,有没有办法找出z>200或z<负200?对不起,也许我的解释不够好。min(其中(abs(cumsum(z))>200))
谢谢您的回复。我认为这是一个发现z>200的好方法。然而,由于存在两种情况z>200或z<负200。如果我们使用abs,负值将返回正值。因此,有没有办法找出z>200或z<负200?对不起,也许我的解释不够好。谢谢你的回复。但是,如果该值第一次达到-200会怎么样?我们需要写一个z小于-200的命令吗?再次感谢您,因为您只需要使用“|”命令将条件语句扩充为“or”。就像在if_else(z>200 | zYes)中一样,我认为使用“|”是正确的。但是,如果我应用zmaybe,请将其放在括号中,或者写信感谢您的回复。但是,如果值第一次达到-200,该怎么办?我们是否需要编写一个z小于-200的命令?再次感谢,因为您只需使用“|”命令将条件语句扩展为“or”。就像if_else(z>200 | zYes)一样,我认为使用“|”是正确的。但是,如果我应用zmaybe,请将其放在括号中或写下