이 버클을 R로 발견했는데 왜 발생했는지에 대한 많은 증거를 찾을 수 없습니다. 수표로 샘플을 다시 만들려고했는데 어떤 경우에는 sample
함수가 다르게 작동하는 것을 발견했습니다. 이 예를 참조하십시오R 샘플 함수가 1 천만 개가 넘는 값을 표시합니다.
# Look at the first ten rows of a randomly ordered vector of the first 10 million integers
set.seed(4)
head(sample(1:10000000), 10)
[1] 5858004 89458 2937396 2773749 8135739 2604277 7244055 9060916 9490395 731445
# Select a specified sample of size 10 from this same list
set.seed(4)
sample(1:10000000), size = 10)
[1] 5858004 89458 2937396 2773749 8135739 2604277 7244055 9060916 9490395 731445
# Try the same for sample size 10,000,001
set.seed(4)
head(sample(1:10000001), 10)
[1] 5858004 89458 2937396 2773750 8135740 2604277 7244056 9060917 9490396 731445
set.seed(4)
sample(1:10000001), size = 10)
[1] 5858004 89458 2937397 2773750 8135743 2604278 7244060 9060923 9490404 731445
나는이 1000 만 임계 값에 많은 값을 테스트하고 값이 일치하는 것을 발견 (I은 10 개 이상의 출력 행을 테스트하지 인정하지만).
누구에게 무슨 일이 일어나고 있는지 알고 계십니까? 이 1000 만 개의 숫자에 대해 중요한 점이 있습니까?
감사합니다. @ Gregor. 문서를 더 파헤쳐 야합니다. 코드를 살펴본 후,'useHash = TRUE' 일 때'sample'보다는'sample2'를 호출한다는 것을 알았습니다. 나는 아직도 실제로 일어나고있는 것을 이해하려고 노력하고있다. – alwaysnew
'sample'은 항상'sample.int'를 호출합니다. 'sample.int', * .Internal()'*을 사용하면'useHash'에 따라 C로 작성된 두 개의'sample' 구현 중 하나를 호출 할 것입니다. '.Primitive' 또는'.Internal'을 볼 때마다 그것은 R을 호출하는 것입니다.'sample2'는 해시 테이블을 사용하는 메모리 효율적인 구현이고, 'sample'은 작은 데이터에 대해보다 유연한 기본값입니다. Dominic의 대답에서'pryr'를 사용하여 코드를 보는 방법에 대한 지침을 포함하여 [자세한 내용은이 질문을 참조하십시오] (https://stackoverflow.com/q/14035506/903061). 얼마나 더 당신이 원하는지/이해할 필요가 있는지 잘 모르겠습니다 ... – Gregor