R? 목록에서 임의의 요소를 선택하십시오.
a<-c(1,2,0,7,5)
일부 언어에는 선택 기능이 있습니다.-하나의 난수를 선택하십시오 a
-R 에서 어떻게?
# Sample from the vector 'a' 1 element.
sample(a, 1)
위의 답변은 기술적으로 정확합니다.
sample(a,1)
그러나이 과정을 여러 번 반복하고 싶다면 주사위 던지기를 모방하고 싶다면 다음을 추가해야합니다.
a<-c(1,2,3,4,5,6)
sample(a, 12, replace=TRUE)
도움이 되었기를 바랍니다.
샘플 사용시주의하세요!
sample(a, 1)
예제의 벡터에는 훌륭하게 작동하지만 벡터의 길이가 1이면 원하지 않는 동작이 발생할 수 1:a
있으며 샘플링에 벡터 를 사용합니다 .
따라서 다양한 길이 벡터에서 임의의 항목을 선택하려는 경우 길이 1의 경우를 확인하십시오!
sampleWithoutSurprises <- function(x) {
if (length(x) <= 1) {
return(x)
} else {
return(sample(x,1))
}
}
R에서 난수 생성에 대한 이 기사를 읽어보십시오 .
http://blog.revolutionanalytics.com/2009/02/how-to-choose-a-random-number-in-r.html
sample
이 경우 사용할 수 있습니다
sample(a, 1)
두 번째 속성은 하나의 난수 만 얻고 싶다는 것을 보여줍니다 . 일부 범위 runif
함수 사이에 숫자를 생성하는 것이 유용합니다.
이 방법은 벡터가 길이 1 일 때 오류를 생성하지 않으며 간단합니다.
a[sample(1:length(a),1)]
대안은 runif를 사용하여 벡터에서 항목을 선택하는 것입니다. 즉
a <- c(1,2,0,7,5)
a[runif(1,1,6)]
실행될 때마다 하나를 선택하는 함수를 원한다고 가정 해 보겠습니다 (예를 들어 시뮬레이션에서 유용함). 그래서
a <- c(1,2,0,7,5)
sample_fun_a <- function() sample(a, 1)
runif_fun_a <- function() a[runif(1,1,6)]
microbenchmark::microbenchmark(sample_fun_a(),
runif_fun_a(),
times = 100000L)
단위 : 나노초
sample_fun_a ()-4665
runif_fun_a ()-1400
이 예에서는 runif가 더 빠른 것 같습니다.
참고 URL : https://stackoverflow.com/questions/9390965/select-random-element-in-a-list-of-r
'developer tip' 카테고리의 다른 글
페이지에 입력 요소를 배치하지 않고 키 누름을 캡처 하시겠습니까? (0) | 2020.12.04 |
---|---|
USB 케이블로 연결된 경우 Eclipse에서 장치가 감지되지 않음 (0) | 2020.12.04 |
XSLT에서 문자열을 비교할 때 "같지 않음"을 지정하는 방법 (0) | 2020.12.04 |
SpinnerAdapter에서 getView와 getDropDownView의 차이점 (0) | 2020.12.04 |
두 개의 출력 파일 이름이 동일한 출력으로 확인 됨 (0) | 2020.12.04 |