mercredi 4 décembre 2019

ifelse and return in the for loop

I need a help for my syntax.

library(e1071)
priori <- function (I, N, M) {
  a <- as.matrix(runif(I, min = 0.65, max = 1.70))
  b <- as.matrix(runif(I, min = -2.80, max = 2.80))
  c <- as.matrix(runif(I, min = 0.00, max = 0.35))
  k <- c(rnorm(N*20/100, 0, 1), rnorm(N*80/100,0, 0.01))
  M <- cbind(b,a,c)
data <- as.data.frame(rmvlogis(N, M, IRT = FALSE, link = "logit", z.vals = k))
print(data)}

This is my syntax which is generate data.

priori.list <- vector("list", 3)
names(priori.list) <- paste0("L", seq_along(priori.list))
priori.sum.list <- vector("list", 3)
for (i in 1:3) {
  for (j in 1:100) {
  priori.list$L1[[j]] <- priori(10,100, M="2PL")
  priori.list$L2[[j]] <- priori(20,500, M="2PL")
  priori.list$L3[[j]] <- priori(40,1000,M="3PL")
  priori.sum.list [[i]][[j]] <- rowSums(priori.list[[i]][[j]])
  print(kurtosis(priori.sum.list[[i]][[j]]))
  if(skewness(priori.sum.list[[i]][[j]])>=-1 | skewness(priori.sum.list[[i]][[j]]>=1)
     & kurtosis(priori.sum.list[[i]][[j]])>=-1 | kurtosis(priori.sum.list[[i]][[j]]>=1))
  {NA}
  else
  {return(j=j-1)}}}

Then I do a data list from syntax. I want to create a loop according to the skewness and kurtosis coefficient, but I couldn't. My purpose: If the skewness and kurtosis coefficient is outside 1 and -1, save to list if not regenerate. Can You help me for correct syntax? Thank You.

Aucun commentaire:

Enregistrer un commentaire