所以基本上,我试图多次运行随机性转折点测试以获得转折点样本(比如说30)。在此之前,我从正态分布(0,1)运行大小为20的随机样本。 我需要运行30次以获得30个TP。
我可以手工完成,30次。但是,使用for循环更方便,更方便,但我真的不知道从那里去哪里..
turning.point.test()
函数需要安装包randtests
。
这是我的代码,显然不太好。
sample.P=numeric(30)
for (i in 1:30) {
Zn[i]<-rnorm(20) #Generating random samples of size 20 from N(0,1)
TP.test[i]<-turning.point.test(Zn, alternative="two.sided")
sample.P[i]<-TP.test$tp[i] #extract the TP value from the test
}
所以它不起作用,为什么?我在互联网上搜索了一个答案,但它从未与我的问题有关。我无法将其应用于我的代码。
错误消息:
There were 50 or more warnings (use warnings() to see the first 50)
**number of items to replace is not a multiple of replacement length**
答案 0 :(得分:1)
在几个位置,正在创建的内容不仅仅包含一个元素,当您执行类似于asdf[i]
的赋值语句时,R期望看到它,这表示单个元素。由于最后需要的是TP值的向量,因此循环中的其他量可以在每次迭代时更改,而不会影响结果。所以,这样的事情,你应该很高兴:
sample.P=numeric(30)
for (i in 1:30) {
Zn<-rnorm(20) #Generating random samples of size 20 from N(0,1)
TP.test<-turning.point.test(Zn, alternative="two.sided")
sample.P[i]<-TP.test$tp #extract the TP value from the test
}
甚至
sample.P=numeric(30)
for (i in 1:30) {
sample.P[i]<-turning.point.test(rnorm(20), alternative="two.sided")$tp
}