벡터

2014-03-27 2 views
0

에서 가장 빈번하게 분수를 식별 내가 분수를 포함하는 벡터가 : 나는 벡터에서 가장 빈번하게 (즉, 대부분의) 수를 결정하고 그 수를 반환하려는벡터

a<-c(0.5,0.5,0.3,0.5,0.2) 

합니다.

table(a) 전체 테이블을 반환하기 때문에 작동하지 않습니다. 0.5 만 반환하고 싶습니다.

동점 일 경우 무작위로 선택하고 싶습니다.

function(x){ 
    a<-tabulate(x,nbins=max(x)); b<-which(a==max(a)) 
if (length(b)>1) {a<-sample(b,1)} else{b} 
} 

그러나,이 분수 작동하지 않습니다 :

나는 정수에 대해이 작업을 수행하는 기능을 가지고있다.

누군가 도움을 줄 수 있습니까? 귀하의 경우와 숫자 하나를 원하는 경우

답변

3

당신은

names(which.max(table(a))) 

을 사용할 수 있습니다, 다음 넥타이 케이스를 랜덤 숫자

as.numeric(names(which.max(table(a)))) 

에 강요, 테이블을 무작위로 추가 할 수 있습니다

as.numeric(names(which.max(sample(table(a))))) #note this works only if length(unique(a)) > 1 
+0

위대한 작품입니다. 유일한 것은 넥타이의 경우입니다. 무작위로 선택하고 싶습니다. 이 코드가 항상 0.5를 반환하는 <-c (0.5,0.5,0.6,0.6)이라고 상상해보십시오. 그러나 0.5에서 0.6 사이에서 무작위로 선택하고 싶습니다. – user1723765

+0

이 값은 0.5가 아니라 "0.5"를 반환합니다. –

+0

부동 소수점 정확도 문제가 발생할 수 있습니다. – Roland