R 调整数据帧

R 调整数据帧,r,if-statement,dataframe,R,If Statement,Dataframe,我正在建立一个数据框架来决定何时买入和卖出股票 我的第一个数据框看起来像这样,其中的观测值是给定时间点上给定比率的百分比顺序 AAPL <- c(0.25,0.25,0.25,0.5,0.5,0.75,0.5,1,1,0.5,0.5,0.5,0.25) df <- data.frame (AAPL) AAPL根据我的理解!!!: . 首先,aapl和boolean可以作为全局变量。canibuy是一个可以帮助你了解你处于买入或卖出水平的变量 aapl<<-c(0.25,

我正在建立一个数据框架来决定何时买入和卖出股票

我的第一个数据框看起来像这样,其中的观测值是给定时间点上给定比率的百分比顺序

AAPL <- c(0.25,0.25,0.25,0.5,0.5,0.75,0.5,1,1,0.5,0.5,0.5,0.25)
df <- data.frame (AAPL)

AAPL根据我的理解!!!:
. 首先,aapl和boolean可以作为全局变量。canibuy是一个可以帮助你了解你处于买入或卖出水平的变量

aapl<<-c(0.25, 0.25, 0.25, 0.5, 0.5, 0.75, 0.5, 1, 1, 0.5, 0.5, 0.5, 
0.25)
canibuy<<-T

 iequal1<-function(xi){
 retvalue<-0

                            if(is.na(xi)) {retvalue<-0
                                        } else if(xi<.4){
                                            retvalue<-1;canibuy<<-F     
                                                    }else  {
                                                  retvalue<-0;canibuy<<-T

                                                       }
return(retvalue)
 }
 ####check with values
  iequal1(0);canibuy
 iequal1(.5);canibuy
  iequal1(.6);canibuy

  inotequal1<-function(i){
  retvalue<-0
  if(canibuy){
    if(is.na(aapl[i])) { retvalue<-0
                       }else if(aapl[i]<.4){
                                               retvalue<-1;canibuy<<-F
                                              }else{
                                                      retvalue<-0
                                                    }
   }else  {
             if(is.na(aapl[i])) { retvalue<-0
                           }else if(aapl[i]>.6){
                                      retvalue<--1;canibuy<<-T
                                                   }else{
                                                        retvalue<-0
                                                        }

            }
return(retvalue)
}

selection<-function(){
sapply(seq_along(aapl),function(i){
                   retvalue<-0

                    if(i==1){##i==1
                             retvalue<-iequal1(aapl[i])
                            }else{ 
                                              retvalue<-inotequal1(i)
                                    }
                        return(retvalue)
                            }


 )
 }

selection()
##[1]  1  0  0  0  0 -1  0  0  0  0  0  0  1

aa您可能需要添加更多代码来显示您正在尝试执行的操作。(对我来说)你想做什么还不清楚。@Kevin我已经用我的代码更新了这篇文章,以及哪里不起作用。你现在明白了吗?太好了!非常感谢你!正是这样
selection <- function(x) {
sapply(seq_along(x), function(i){
    if (i==1 & x[1]<0.4) {
        1
    } else if (is.na(x[i])) {
        0
    } else if (x[i] < 0.4 & is.na(x[i-1])) {
        1
    } else if (x[i] < 0.4 & x[i-1] > 0.4) {
        1
    } else if (x[i] > 0.6 & is.na(x[i-1])) {
        -1
    } else if (x[i] > 0.6 & x[i-1] < 0.6) {
        -1
    } else {
        0
    }        
})
}
AAPL.new <- c(1,0,0,0,0,-1,0,-1,0,0,0,0,1)
aapl<<-c(0.25, 0.25, 0.25, 0.5, 0.5, 0.75, 0.5, 1, 1, 0.5, 0.5, 0.5, 
0.25)
canibuy<<-T

 iequal1<-function(xi){
 retvalue<-0

                            if(is.na(xi)) {retvalue<-0
                                        } else if(xi<.4){
                                            retvalue<-1;canibuy<<-F     
                                                    }else  {
                                                  retvalue<-0;canibuy<<-T

                                                       }
return(retvalue)
 }
 ####check with values
  iequal1(0);canibuy
 iequal1(.5);canibuy
  iequal1(.6);canibuy

  inotequal1<-function(i){
  retvalue<-0
  if(canibuy){
    if(is.na(aapl[i])) { retvalue<-0
                       }else if(aapl[i]<.4){
                                               retvalue<-1;canibuy<<-F
                                              }else{
                                                      retvalue<-0
                                                    }
   }else  {
             if(is.na(aapl[i])) { retvalue<-0
                           }else if(aapl[i]>.6){
                                      retvalue<--1;canibuy<<-T
                                                   }else{
                                                        retvalue<-0
                                                        }

            }
return(retvalue)
}

selection<-function(){
sapply(seq_along(aapl),function(i){
                   retvalue<-0

                    if(i==1){##i==1
                             retvalue<-iequal1(aapl[i])
                            }else{ 
                                              retvalue<-inotequal1(i)
                                    }
                        return(retvalue)
                            }


 )
 }

selection()
##[1]  1  0  0  0  0 -1  0  0  0  0  0  0  1