使用长度和整数(0)来测试条件表达式

时间:2014-01-20 21:14:24

标签: r

我发布的这个问题引用了一个统计问题,但我遇到的问题是代码。

我有以下向量和自相关计算的重要值,置信区间为95%。 (t + 1只有一个重要值)Package Quantmod。

x<-c(1,1,3,8,5,2,4,3,1,1,0,5,1,1,3,4,6,7,8,9,4,2,1)
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)
poscorr
negcorr

如果在poscorr或negcorr或两者中存在高于/低于95%置信区间的任何显着值,我想指示滞后。我试图在没有成功的情况下使用下面的表达。 (我使用长度(poscorr == 0和长度(negcorr == 0),因为当没有自相关时,结果向量的长度为0。对于negcorr的结果是“integer(0)”)。

posautorrelation <- if(length(poscorr==0)) Lag(x,0) else Lag(x,poscorr)
negautorrelation <- if(length(negcorr==0)) Lag(x,0) else Lag(x,negcorr)
Error en `colnames<-`(`*tmp*`, value = "Lag.") : 
la longitud de 'dimnames' [2] no es igual a la extensión del arreglo
Error durante el wrapup: no se puede abrir la conexión

我也试试

posautorrelation <- if((poscorr==integer(0)) Lag(x,0) else Lag(x,poscorr)
Error: inesperado símbolo in "posautorrelation <- if(length(poscorr==integer(0)) Lag"
Error durante el wrapup: no se puede abrir la conexión

negautorrelation <- if((negcorr==integer(0)) Lag(x,0) else Lag(x,negcorr)
Error: inesperado símbolo in "negautorrelation <- if(length(negcorr==integer(0)) Lag"
Error durante el wrapup: no se puede abrir la conexión

我想知道如何指示最后两个表达式获取两个版本的x。一个具有滞后,一个没有任何自相关值,一个0滞后使用negcorr整数(0)的结果。

1 个答案:

答案 0 :(得分:2)

第一部分解释了which(...)表达式返回integer(0)

的原因
print(negsignificance_level)
# [1] -0.4086807

min(c)
# [1] -0.3432622

which(negsignificance_level > c)
# integer(0)

这是我相信你问题的答案:

if length(object) == then expression1 else expression2

posautorrelation <- if(length(poscorr) == 0) Lag(x,0) else Lag(x, poscorr)
posautorrelation
# [1] NA  1  1  3  8  5  2  4  3  1  1  0  5  1  1  3  4  6  7  8  9  4  2

negautorrelation <- if(length(negcorr) == 0) Lag(x,0) else Lag(x, negcorr)
# [1] 1 1 3 8 5 2 4 3 1 1 0 5 1 1 3 4 6 7 8 9 4 2 1