【发布时间】:2014-06-04 09:56:28
【问题描述】:
我使用此代码并尝试对其进行子集化。源数据如下
library(quantmod)
library(combinat)
getSymbols("AAPL",from="2012-01-01")
data<-AAPL
p1<-4
dO<-data[,1]
dC<-data[,4]
emaO<-EMA(dO,n=p1)
emaC<-EMA(dC,n=p1)
Pos_emaO_dO_UP<-emaO>dO
Pos_emaO_dO_D<-emaO<dO
Pos_emaC_dC_UP<-emaC>dC
Pos_emaC_dC_D<-emaC<dC
Pos_emaC_dO_D<-emaC<dO
Pos_emaC_dO_UP<-emaC>dO
Pos_emaO_dC_UP<-emaO>dC
Pos_emaO_dC_D<-emaO<dC
frame<-
data.frame(Pos_emaO_dO_UP,Pos_emaO_dO_D,Pos_emaC_dC_UP,Pos_emaC_dC_D,Pos_emaC_dO_D,Pos_emaC_dO_UP,Pos_emaO_dC_UP,Pos_emaO_dC_D)
colnames(frame)<-vector<-c("Pos_emaO_dO_UP","Pos_emaO_dO_D","Pos_emaC_dC_UP","Pos_emaC_dC_D","Pos_emaC_dO_D","Pos_emaC_dO_UP","Pos_emaO_dC_UP","Pos_emaO_dC_D")
这是用来取出废话的代码
comb<-as.data.frame(combn(vector,4))
comb
rc<-comb[!sapply(comb, function(x) any(duplicated(sub('_D|_UP', '', x))))]
然后我尝试通过组合第一列中的变量来对主框架进行子集化
kb<-as.vector(rc[,1])
vr<-paste(kb,collapse=" & ")
subset(frame,vr)
但结果是:子集必须是合乎逻辑的。我需要通过所有这些组合来对框架进行子集化,例如
subset(frame,Pos_emaO_dO_D & Pos_emaC_dC_UP & Pos_emaC_dO_D & Pos_emaO_dC_UP) #etc.
一个接着一个,然后用在我写来分析的每个子集函数上
subsetit<-function(x,y){
f<-head(subset(main_table,y & x),-1)
1d_l_prof<-nrow(f[f$Profit_L_1>0.1,])/nrow(f)
2d_l_prof<-(nrow(f[f$Profit_L_2>0.1,])/nrow(f))/2
3d_l_prof<-(nrow(f[f$Profit_L_3>0.1,])/nrow(f))/3
4d_l_prof<-(nrow(f[f$Profit_L_4>0.1,])/nrow(f))/4
5d_l_prof<-(nrow(f[f$Profit_L_5>0.1,])/nrow(f))/5
6d_l_prof<-(nrow(f[f$Profit_L_6>0.1,])/nrow(f))/6
7d_l_prof<-(nrow(f[f$Profit_L_7>0.1,])/nrow(f))/7
8d_l_prof<-(nrow(f[f$Profit_L_8>0.1,])/nrow(f))/8
9d_l_prof<-(nrow(f[f$Profit_L_9>0.1,])/nrow(f))/9
10d_l_prof<-(nrow(f[f$Profit_L_10>0.1,])/nrow(f))/10
df<-data.frame(1d_l_prof,2d_l_prof,3d_l_prof,4d_l_prof,5d_l_prof,6d_l_prof,7d_l_prof,8d_l_prof,9d_l_prof,10d_l_prof)
return(df)
}
子集错误的问题应该在哪里? 会起作用一些
lapply(rc[,c(1:length(rc))],subsetit] ?
【问题讨论】:
-
@jbaums 有新问题 :)
-
这个问题与您的other question 有何不同?他们在我看来是一样的......
-
另一个问题是不同的,我当时已经改变了它,但是jbaums告诉我最好创建一个新的,所以我做到了。首先是不同的。我会删除它以使其清楚。谢谢
-
如果有答案,我不允许删除,对不起我的错误。不会重复。
-
您的
vr似乎是一个字符串。如果你走这条路,你需要做臭名昭著的eval(parse(paste0('subset(frame,' , vr,')' )))构造。
标签: r