2014-11-13 3 views
2

나는 저를 뒤적 거리는 간단한 질문이 있습니다. 빈 (0, .01), (.01, .02) 등에서 얼마나 많은 벡터 값이 떨어지는 지 계산하려면 루프를 사용하려고합니다. 예를 들어 루프가 작동하지 않습니다.R의 십진법 반복 루프

set.seed(12345) 
x<- rnorm(100, 0, .05) 
vec <- rep(NA, 11) 

for(i in .01:.11){ 
vec[i] <- sum(x> i & x < (i +.01)) 
} 

내가 궁극적으로 각 구분 사이의 계수의 벡터를 생산하는이 좋아하는 것, 위의 출력이되도록 :

5,9,10... 

나는이 색인/소수 함께 할 수있는 뭔가가있을 수 있습니다 생각합니다. 모든 도움에 감사드립니다.

+1

문제는'.01 : .11'과 관련이 있습니다. 해당 스 니펫을 실행하고 원하는지 확인하십시오. 정수가 아닌 경우 seq 또는 (1:11)/100을 사용해야합니다. (물론,'cut '을 쓰면'for' 루프보다 낫습니다.) – Gregor

답변

5

예제에 음수가 포함되어 있으므로 양수로이 작업을 수행하려고합니다. breaks 매개 변수를 설정하여 cut을 사용하여 지정된 빈으로 벡터를 나눕니다. 그런 다음 table을 사용하면 각 간격 내에있는 x의 빈도를 계산할 수 있습니다.

## filter x 
x <- x[x>=0.01] ## EDIT here : was x <- abs(x) 
res <- table(cut(x,breaks=seq(round(min(x),2),round(max(x),2),0.01))) 
## prettier output coerce to data.frame 
as.data.frame(res) 

#   Var1 Freq 
# 1 (0.01,0.02] 5 
# 2 (0.02,0.03] 9 
# 3 (0.03,0.04] 10 
# 4 (0.04,0.05] 10 
# 5 (0.05,0.06] 4 
# 6 (0.06,0.07] 0 
# 7 (0.07,0.08] 5 
# 8 (0.08,0.09] 2 
# 9 (0.09,0.1] 5 
# 10 (0.1,0.11] 4 
# 11 (0.11,0.12] 1