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