완전 채식주의 자 패키지를 사용하여 PRC를 수행하지만 결과에 Anova를 수행하려고 할 때 문제가 발생합니다.shuffleSet을 사용하여 제한된 순열 (permute)을 사용하지 못하고 셔플을 사용하여 실행합니다.
Error in doShuffleSet(spln[[i]], nset = nset, control) :
number of items to replace is not a multiple of replacement length
문제는 변경하다 - 패키지의 shuffleSet 기능에서 유래 : 나는 다음과 같은 오류 메시지가 나타납니다. 아래에 재현 가능한 예제를 만들었습니다. 이상한 것은 shuffle-function이 문제를 일으키지 않지만 shuffleSet-function이 문제가된다는 것입니다.
나의 실험에서 3 마리의 치료가 4 마리의 동물에게 주어졌다. 동물들은 다른 순서로 치료를 받았다. 매일 5 샘플을 수집했습니다.
내 견해를 동물 사이에서 바꾸고 싶습니다. 따라서 AnimalID를 블록으로 사용합니다.
나는 (내 실제 실험에서 여러 번 동일한 치료를받은 동물) 일을 순차적으로 바꾸고 싶지만 하루 만에 측정을 그대로 유지하십시오. 그래서 나는 자유롭게 시대를 순열하고 일 이내에 순열을 택하지 않았다.
require(permute)
TreatmentLevels=3
Animals=4
TimeSteps=5
AnimalID=rep(letters[1:Animals],each=TreatmentLevels*TimeSteps)
Time=rep(1:TimeSteps,Animals=TreatmentLevels)
#treatments were given in different order per animal.
Day=rep(c(1,2,3,2,3,1,3,2,1,2,3,1),each=TimeSteps)
Treatment=rep(rep(LETTERS[1:TreatmentLevels],each=TimeSteps),Animals)
dataset=as.data.frame(cbind(AnimalID,Treatment,Day,Time))
ctrl=how(blocks = dataset$AnimalID,plots = Plots(strata=dataset$Day,type = "free"),
within=Within(type="none"), nperm = 999)
#this works
shuffle(60,control=ctrl)
#this giveas an error
shuffleSet(60,nset=1,control=ctrl)
shuffleSet(60,nset=10,control=ctrl)
문제가 블록에있는 것 같습니다. 이
dataset$AnimalDay=factor(paste0(dataset$AnimalID,dataset$Day))
ctrl=how(plots = Plots(strata=dataset$AnimalDay,type = "free"),
within=Within(type="none"), nperm = 999)
#this works
shuffle(60,control=ctrl)
shuffleSet(60,nset=1,control=ctrl)
shuffleSet(60,nset=10,control=ctrl)
또한 nset = 10을 사용하여 실패합니다. – Nightingale
확인할 수 없습니다. 시도 할 때 nset = 10으로 정상적으로 작동합니다. 또한,'shuffleSet'은 모든 경우에 동작하며'nset = 1'도 함께 작동합니다. 실패한 것은 결과를 화면에 보여줍니다. 오류 메시지는'print.permutationMatrix()'에서 가져오고'p <- shuffleSet (60, nset = 1, control = ctrl) '을 사용하여 결과를 저장하지 않으면 오류가 발생하지 않습니다. –
그냥 분명히 : 사용자 오류처럼 들리는 오류 메시지 ('대체 할 항목 수는 대체 길이의 배수가 아닙니다')를 본 적이 없습니다. 내가받은 메시지는'dimension 속성이 길이 2 (0)가 아니라면'클래스를 행렬로 설정하는 것은 무효하다.'는 순열을'print'하는 것으로 나온다. 그 이유는 명백합니다 :'nset = 1'을 사용하면 순열은 1 행 행렬이 아닌 벡터로 떨어집니다. 'AnimalDay' 인자로보고 한 두 번째 경우는'print'에서 작동합니다. 벡터에 떨어지지 않기 때문입니다. 두 경우 모두'shuffleSet'이 작동합니다. –