상대적으로 높은 차원 (100X500000) 인 매트릭스 Q를 가지고 있으며이를 다운 샘플링하려고합니다. 다운 샘플링을 통해 예제로 설명하겠습니다.매트릭스를 R에서 다운 샘플링 R
하자 Q =
1 4 9
3 2 1
및 다운 샘플링 사이즈 = N. 저는 sum (Q) = 20 구슬의 항아리에서 n 구슬을 그려야합니다. 각 구슬은 행렬의 다른 색인 쌍에 해당하는 6 가지 방법 중 1 가지를 채색합니다. 마치 A 공 1 개, B 공 4 개 등등, 교체하지 않고 n 개의 공을 그린 것 같습니다.
행렬과 같은 형식으로 반환되기를 바랍니다. 이것에 문제가, 샘플 1 간주됩니다 그러나
sample(length(as.vector(Q)), size=n, replace=FALSE, prob = as.vector(Q))
: 길이 (한 예로 반환 값, 예를 들어, 다운 샘플링 (질문 3)
0 0 2
1 0 0
내 접근 방식은 샘플을 사용하려고 = as.vector (Q))를 가지고 있기 때문에 내 볼을 대체하지 않기 때문에 길이 (as.vector (Q)) 이상의 볼을 그릴 수 없습니다.
그래서 내 방법에 적응하려면이 벡터에서 1을 빼고 prob를 업데이트해야하며 일종의 for 루프를 사용하여 샘플을 하나씩 호출해야합니다. 좋은 코드처럼 들리지는 않습니다.
R- 친화적 인 방법으로 루프 방식을 사용하는 것이 더 좋은 방법이 있습니까?
위대한, 나는 이것을 시도 할 것이다. Fyi 나는 차원의 문자 b/c를 사용할 수 없지만 이름 = [1 : 길이 (as.vector (Q)] 만 사용합니다. – lynnyi