Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays lapply和rbind未正确附加结果 SimNo_Arrays_R_Loops_Lapply_Rbind - Fatal编程技术网

Arrays lapply和rbind未正确附加结果 SimNo

Arrays lapply和rbind未正确附加结果 SimNo,arrays,r,loops,lapply,rbind,Arrays,R,Loops,Lapply,Rbind,每当您重复同一操作多次且没有输入时,请考虑使用replicate。在这里,您可以使用它两次: SimNo <- 10 for (i in 1:SimNo){ z1<-rnorm(1000,0,1) z2<-rnorm(1000,0,1) z3<-rnorm(1000,0,1) z4<-rnorm(1000,0,1) z5<-rnorm(1000,0,1) z6<-rnorm(1000,0,1) X<-cbind(

每当您重复同一操作多次且没有输入时,请考虑使用
replicate
。在这里,您可以使用它两次:

 SimNo <- 10

 for (i in 1:SimNo){
  z1<-rnorm(1000,0,1)
  z2<-rnorm(1000,0,1)
  z3<-rnorm(1000,0,1)
  z4<-rnorm(1000,0,1)
  z5<-rnorm(1000,0,1)
  z6<-rnorm(1000,0,1)

  X<-cbind(z1,z2,z3,z4,z5,z6)
  sx<-scale(X)/sqrt(999)
  det1<-det(t(sx)%*%sx)
  detans<-do.call(rbind,lapply(1:SimNo, function(x) ifelse(det1<1,det1,0)))
 }
编辑:您在评论中询问了如何使用
replicate
访问
X
。您必须在列表中创建并存储所有
X
矩阵。然后使用
*apply
函数系列在该列表中循环以完成计算:

SimNo <- 10
detans <- numeric(SimNo)
for (i in 1:SimNo) {
  z1<-rnorm(1000,0,1)
  z2<-rnorm(1000,0,1)
  z3<-rnorm(1000,0,1)
  z4<-rnorm(1000,0,1)
  z5<-rnorm(1000,0,1)
  z6<-rnorm(1000,0,1)

  X<-cbind(z1,z2,z3,z4,z5,z6)
  sx<-scale(X)/sqrt(999)
  det1<-det(t(sx)%*%sx)
  detans[i] <- ifelse(det1<1,det1,0)
}

X
SimNo谢谢你的回答。关于如何访问单个x,例如x1、x2。。。x6。再次感谢您应该避免使用单列矩阵,而应使用向量。无论如何,我想你的意思是循环中的最后一行是:
matdet[I]
SimNo <- 10
detans <- numeric(SimNo)
for (i in 1:SimNo) {
  z1<-rnorm(1000,0,1)
  z2<-rnorm(1000,0,1)
  z3<-rnorm(1000,0,1)
  z4<-rnorm(1000,0,1)
  z5<-rnorm(1000,0,1)
  z6<-rnorm(1000,0,1)

  X<-cbind(z1,z2,z3,z4,z5,z6)
  sx<-scale(X)/sqrt(999)
  det1<-det(t(sx)%*%sx)
  detans[i] <- ifelse(det1<1,det1,0)
}
X <- replicate(SimNo, replicate(6, rnorm(1000, 0, 1)), simplify = FALSE)

det1 <- sapply(X, function(x) {
  sx <- scale(x) / sqrt(999)
  det(t(sx) %*% sx)
})

detans <- ifelse(det1 < 1, det1, 0)
SimNo <- 10
matdet <- matrix(data=NA, nrow=SimNo, ncol=1, byrow=TRUE)

for (i in 1:SimNo){
  z1<-rnorm(1000,0,1)
  z2<-rnorm(1000,0,1)
  z3<-rnorm(1000,0,1)
  z4<-rnorm(1000,0,1)
  z5<-rnorm(1000,0,1)
  z6<-rnorm(1000,0,1)

  X<-cbind(z1,z2,z3,z4,z5,z6)
  sx<-scale(X)/sqrt(999)
  det1<-det(t(sx)%*%sx)

 matdet[i] <-do.call(rbind,lapply(1:SimNo, function(x) ifelse(det1<1,det1,0)))
}
matdet