当一个对象中存在多个列时,两个对象的列长度

时间:2014-01-22 00:58:05

标签: r zoo quantmod

我有以下vector和acf函数(包quantmod,XML,zoo)

L<- 1
theurl <- "http://www.iasg.com/groups/group/transtrend/program/transtrend-diversified-   
trend-program-enhanced-risk-usd"
tables <- readHTMLTable(theurl)
n.rows <- unlist(lapply(tables, function(t) dim(t)[1]))
MONTHLYPERFORMANCE<-tables[[which.max(n.rows)]]
z<- as.data.frame(MONTHLYPERFORMANCE);
z$Year<-NULL
z$YTD <- NULL
z$DD <- NULL
z <- z[nrow(z):1,];
s<-as.vector(t(z))
w<-as.numeric(s)
p<-na.omit(w)
x<-(p*0.01*L)
d<-length(na.omit(x)) 
x<- x[1:d]  
#DETREND+DENOISE
s<-detrend(x, tt = 'linear', bp = c())
#AUTOCORRELATION
a<-acf(x)
b<-a[[1]]   
c<-(b[2:length(b)])
posssignificance_level<-qnorm((1+0.95)/2)/sqrt(sum(!is.na(x)))
posssignificance_level
negsignificance_level<- -posssignificance_level
negsignificance_level
poscorr<-which(posssignificance_level<c)
negcorr<-which(negsignificance_level>c)
posautorrelation <- if(length(poscorr) == 0) Lag(s,0) else na.omit(posautorrelation <-  
Lag(s, poscorr))
negautorrelation <- if(length(negcorr) == 0) Lag(s,0) else na.omit(negautorrelation <-  
Lag(s, negcorr))

然后,我希望通过posautorrelation和negautorrelation得到所有系列,以通过以下表达式从posautorrelation和negautorrelation获取最小行数

shortest <- min(length(posautorrelation), length(negautorrelation))
posautorrelation <- tail(posautorrelation, shortest)
negautorrelation <- tail(negautorrelation, shortest)
tpos <-na.omit(posautorrelation); rownames(tpos)<-NULL
tneg <-na.omit(negautorrelation); rownames(tneg)<-NULL

当我只有一个系列正面和另一个负面时,这很有效。但是,如果“posautorrelation”或“negautorrelation”产生多个列,则最短函数将不同列的行数与从上面设置“最短”表达式相加。有没有办法让“最短”只考虑一列用于posautorelation,而对于negautorrelation则相同。

1 个答案:

答案 0 :(得分:0)

shortest <- min(length(posautorrelation[,1]), length(negautorrelation[,1]))