R中函数计算中的多行

Joe*_*eri 1 r function

我有以下数据:

measurement <- c(1:30)
angle <- rnorm(30, 0, 0.4)
data.1 <- data.frame(measurement, angle)
Run Code Online (Sandbox Code Playgroud)

我想创建一个函数,为四种不同的场景返回一个TRUE值:

   1. When 'angle' >  0.3 
or 2. When 'angle' < -0.3 
or 3. When 'angle' + the previous 'angle' >  0.3 
or 4. When 'angle' + the previous 'angle' < -0.3 
Run Code Online (Sandbox Code Playgroud)

我尝试了一个for循环,我已经尝试了以下方式,但我只是不知道如何包括角度和角度的总和,这是一个时间步骤提前测量(所以我是什么在这里做错了但是我怎么能改进呢?最好是在计算上最不费劲的方式,因为我使用海量数据集):

n<-data.1$angle
function1 <- function(n){
    return(n>0.3 | n<(-0.3) | (n+(n-1))>(0.3) | (n+(n-1))<(-0.3))
}
Run Code Online (Sandbox Code Playgroud)

很抱歉作为R新手,但在漫步R文件的迷宫后,我没有别的办法,只能在这里问一下.谢谢你的帮助!

Aru*_*run 6

您可以以矢量化格式执行此操作,而不是逐个执行每个角度.

abs(data.1$angle) > 0.3 | abs(data.1$angle + c(0, head(data.1$angle,-1))) > 0.3
Run Code Online (Sandbox Code Playgroud)

abs(data.1 $ angle)> 0.3 - 第一和第二个条件.
abs(data.1 $ angle + c(0,head(data.1 $ angle,-1)))> 0.3 - 获取所有角度并使用以前的角度添加c(0, head(., -1)).然后再次检查abs0.3和-0.3

我明白了:

# [1] FALSE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE
# [15]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE  TRUE  TRUE
# [29]  TRUE  TRUE
Run Code Online (Sandbox Code Playgroud)