대학에서 진행중인 연구 프로젝트의 시뮬레이션을 코드화하려면 R을 사용하고 있습니다. 관련 데이터 구조를 생성하고 데이터를 생성 한 후, 어떤 효과 K에 의해 20x20 매트릭스에서 관측치의 비율 P (0.02 단위로)를 무작위로 수정하려고합니다. 수정 될 관측치를 무작위로 결정하기 위해 행 (rRow) 및 열 (rCol) 인덱스를 나타 내기 위해 P * 400과 같은 정수를 두 번 두 번 사용합니다. 즉, 20 × 20, 0으로 초기화되고, I는 행렬 alrdyModded을 만들중첩 된 while 루프 in for 루프에 대한 문제
없음 관찰 번 이상 변형되지 않음을 보장하기 위해,이 알고리즘을 수행한다.
나는 rRow와 rCol에서 첫 번째 값을 취하여 alrdyModded [rRow [1]] [rCol [1]] == 1인지 확인합니다. alrdyModded [rRow [1]] [rCol [1]] == 1, i = 0 일 때까지 인덱스에 대해 임의로 새 정수를 선택합니다.
alrdyModded [rRow [1]] [rCol [1]] == 0, 동일한 인덱스를 갖는 처리 행렬에서의 값을 수정하고 rRow의 전체 길이 alrdyModded [rRow [1] [rCol [1] 1
반복 변경 rCol 벡터
이 작업을 수행하는 좋은 방법은 while 루프가 for 루프에 중첩되어 있다고 생각합니다.
R의 CODE : I가 R에 다음 코드를 입력 할 때, I는 다음 에러 코드를 수신
propModded<-1.0
trtSize<-2
numModded<-propModded*400
trt1<- matrix(rnorm(400,0,1),nrow = 20, ncol = 20)
cont<- matrix(rnorm(400,0,1),nrow = 20, ncol = 20)
alrdyModded1<- matrix(0, nrow = 20, ncol = 20)
## data structures for computation have been intitialized and filled
rCol<-sample.int(20,numModded,replace = TRUE)
rRow<-sample.int(20,numModded,replace = TRUE)
## indices for modifying observations have been generated
for(b in 1:numModded){
while(alrdyModded1[rRow[b]][rCol[b]]==1){
rRow[b]<-sample.int(20,1)
rCol[b]<-sample.int(20,1)}
trt1[rRow[b]][rCol[b]]<-'+'(trt1[rRow[b]][rCol[b]],trtSize)
alrdyModded[rRow[b]][rCol[b]]<-1
}
## algorithm for guaranteeing no observation in trt1 is modified more than once
R 출력 "동안에 오류 (alrdyModded1 [rRow [B] ] [rCol [b]] == 1) {: TRUE/FALSE가 필요한 TRUE/FALSE가 누락 된 값 "
for 루프를 실행하고 코드를 실행하면 while 루프는 문을 올바르게 평가합니다. 에서 올바른 값에 액세스 할 때 발생하는 문제 rRow 및 rCol 벡터. 이 문제를 해결할 수있는 도움을 주시면 감사하겠습니다.
색인 생성을 Java 언어와 혼동스럽게 보입니다. 귀하의 추천에 감사 드리며 더 나은 경로 인 것으로 보입니다. – Dan