如何解决R for 循环:为每个循环执行迭代
我正在尝试在 R 中运行模拟,但是我在编写正确的 for 循环时遇到了麻烦。
我尝试执行的迭代是
i=1
distance<-NULL
for(i in 1:48)
{
sample<-coordinates[sample(.N,i)]
meand = (dist(cbind(sample$x,sample$y)))
ppp<-sample
table<-as.matrix(dist(ppp))
table[table == 0] <- 1000
maxmin<-apply(table,1,FUN=min)
distance.1<-mean(maxmin)
distance<-rbind(distance,distance.1)
}
结果给出了一个 48 行的结果数据框,其中 i = 1:48
我想做的是为 for 循环中的每个 i 运行大约 1000 次迭代。然后我想存储1000个结果的平均值,并为每个i存储它们。
我认为replicate() 函数可能是解决方案,但我在使用它们时遇到问题。
所以预期的输出有点
i=1 a (average of 1000 iteration)
i=2 b (average of 1000 iteration)
i=3 c (average of 1000 iteration)
.
.
.
i=48 d (average of 1000 iteration)
编辑
dput(coordinates)
structure(list(x = c(0.24,0.72,1.2,3.675,4.155,4.635,5.115,5.595,6.075,8.55,9.03,9.51,9.99,10.47,10.95,13.425,13.905,14.385,14.865,15.345,15.825,18.3,18.78,19.26,0.24),y = c(0.24,0.24,2.88,2.88)),row.names = c(NA,-48L),class = c("data.table","data.frame"),.internal.selfref = <pointer: 0x0000027c2a7f1ef0>)
解决方法
如果我正确理解了您的问题,apply
函数可能可以很好地解决您的问题。下面,我只是一个嵌套一个sapply
做内的1000个附加重复每个我
sapply(1:48,function(i){
mean(sapply(1:1000,function(x){
sample<-coordinates[sample(.N,i)]
meand = (dist(cbind(sample$x,sample$y)))
ppp<-sample
table<-as.matrix(dist(ppp))
table[table == 0] <- 1000
maxmin<-apply(table,1,FUN=min)
mean(maxmin)
}))
})
我想与您的数据的样本更容易。祝你好运!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。