Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何找出R中的值序列_R - Fatal编程技术网

如何找出R中的值序列

如何找出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(

假设我已经从-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(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,请将其放在括号中或写下