Оптимизация кода R с помощью For Loop с матрицей - PullRequest
0 голосов
/ 15 января 2019

Мне нужно преобразовать следующий код в цикл for, какой самый простой способ сделать это?

set.seed(123)
iter <- 1000
s1 <- 2
mat1 <- matrix(data = rcauchy(iter*s1,0,1),nrow = iter,ncol = s1)
sets1 <- apply(mat1,1,median)
hist(sets1)

s2 <- 5
mat2 <- matrix(data = rcauchy(iter*s2,0,1),nrow = iter,ncol = s2)
sets2 <- apply(mat2,1,median)
hist(sets2)

s3 <- 10
mat3 <- matrix(data = rcauchy(iter*s3,0,1),nrow = iter,ncol = s3)
sets3 <- apply(mat3,1,median)
hist(sets3)

s4 <-20
mat4 <- matrix(data = rcauchy(iter*s4,0,1),nrow = iter,ncol = s4)
sets4 <- apply(mat4,1,median)
hist(sets4)

Я попробовал следующее:

set.seed(1234)
iter <- 1000
size <- c(2,5,10,20)
for(i in 2:size){
  for (j in 1:iter){
     mat[] <- matrix(data = rcauchy(i*j,0,1),nrow=iter,ncol=i)
     s <- apply(mat,1,median)
     hist(s)
}
}

Но это не работает, пожалуйста, помогите

1 Ответ

0 голосов
/ 15 января 2019

Самый простой способ - обернуть создание матрицы в функцию lapply.

set.seed(123)
iter <- 1000
size <- c(2,5,10,20)

returnmatrix<-lapply(size, function(i){
  mat<-matrix(data = rcauchy(i*iter,0,1),nrow=iter,ncol=i)
  s <- apply(mat,1,median)
  hist(s, main=paste("Histogram when S=", i))
  mat
})

Функция lapply построит гистограммы и вернет матрицы в виде списка, если потребуется дополнительная обработка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...