다른 목록의 인덱스 위치를 기반으로 xts 오브젝트 목록에서 값 범위를 추출하려고합니다. 이제는 당신이 일반적인 생각을 가졌으므로 좀 더 구체적으로 생각해보십시오.불규칙한 요소 길이리스트에 for 루프를 적용 (또는 대체 적용)
- 첫번째 데이터
- 제 i가 첫 번째 목록 데이터를 추출하고자하는 숫자 인덱스 값의 벡터를 가지고 여러 XTS 개체를 포함
I는 두 개의리스트가있다. 도움이된다면,이 지표 값은 시계열의 최대/최소를 나타냅니다. 따라서, 각 벡터의 길이는 각 시계열이 최대/최소치의 변화하는 양을 가질 때 균일하지 않다. 이제
, 내가 인덱스 값의 숫자 벡터의 길이를 알고 주어진,이 같은 값의 범위를 추출하는 for 루프를 구성 할 수 있습니다
는# simple example ----------------------------------------------------------
s <- Sys.Date()-11
e <- Sys.Date()
# xts list
obj.xts <- xts(seq(.01,.12,by=.01),seq(from=s, to=e, by=1))
evens <- c(2,4,6,8,10,12)
odds <- evens-1
mylist <- list()
for(i in 1:length(evens)){
mylist[[i]] <- obj.xts[odds[i]:evens[i]]
}
는하지만, 내 현재의 문제가 보인다
: 최대/최소값 인덱스 값의 길이가 길이에 차이가 있음을 다음# still need a solution ---------------------------------------------------
even.list <- list(evens,evens[4])
odd.list <- list(odds,odds[4])
obj.xts2 <- xts(cbind(obj.xts,rev(obj.xts)),index(obj.xts))
split.xts <- list(obj.xts2[,1],obj.xts2[,2])
# desired output, first list element
out1 <- split.xts[[1]][odd.list[[1]][1]:even.list[[1]][1]]
out2 <- split.xts[[1]][odd.list[[1]][2]:even.list[[1]][2]]
out3 <- split.xts[[1]][odd.list[[1]][3]:even.list[[1]][3]]
out4 <- split.xts[[1]][odd.list[[1]][4]:even.list[[1]][4]]
out5 <- split.xts[[1]][odd.list[[1]][5]:even.list[[1]][5]]
out6 <- split.xts[[1]][odd.list[[1]][6]:even.list[[1]][6]]
# from list element 2
out7 <- split.xts[[2]][odd.list[[2]][1]:even.list[[2]][1]]
# FINAL OUTPUT
desiredOutput <- list(out1,out2,out3,out4,out5,out6,out7)
내가 시도한 것입니다,하지만 난 사실에 갇히지 계속이 같은 더
같은 난 단지이 이름을 통해 루프를 가질 수 있도록 내가 값의 전체 범위를 포함하는 문자열의 새로운 목록을 작성하려고했습니다
mylist2 <- list() for(i in 1:??){ for(j in 1:length(split.xts)){ mylist2[[i]] <- split.xts[[j]][odd.list[[j]][i]:even.list[[j]][i]] } }
루프 ... 뭔가 이중에게:
split.xts[[1]][paste(odd.list[[1]][6],even.list[[1]][6],sep=":")]
lapply하지만 솔직히 나는 자랑스럽지 않습니다.
lapply(split.xts, function(x) x[odd.list:even.list])
이 문제를 도와 줄 수있는 적용 제품군의 또 다른 기능이 있습니까? 고맙습니다!
나는 headeack 당신이해야 할 노력을 이해하기 위해 노력하고 있습니다! 나는 꽤 당신이'mapply (function (l, i) l [i], ts_list, index_list)와 같은 것을 찾고 있다고 확신한다. ' – agstudy
haha sorry agstudy! 당신은 확실히 바른 길 위에 있고, mapply와 함께 나에게 큰 팁을 줬다. 나는 그것이 명확하지 않다고 생각하지만 도움이된다면 "확률"은 내가 수집하기를 원하는 범위의 시작이고 "evens"는 멈춤이다. 난 그냥 데이터 범위를 추출하여 mapply 함수를 수정해야 할 것 같아요. 고맙습니다! – jonnie
나는 함수를 편집했지만 "숫자 식은 1009 개의 요소가 있습니다. 첫 번째 사용 만"이라는 경고 메시지가 나타나서 제게 제공 한 출력은 정확하지만 첫 번째 요소 만 제공됩니다. 나는 각 벡터 요소를 통과 할 수 있는지보기 위해 rapply를 시도 할 것입니다. – jonnie