2014-12-30 1 views
0

Теперь у меня есть список, как показано ниже:Как я могу построить функцию for для матрицы?

mylist 
[[1]] 
[1] 0 1 0 1 1 0 0 1 0 

[[2]] 
[1] 0 1 0 1 0 1 0 1 1 
... 

Я хотел бы сделать каждый список в матрицу 3 * 3, а, для функции петли, как:

for (i in 1:N){ 
m[i]=matrix(mylist[[i]],nrow=3,ncol=3,byrow=TRUE) 

} 

Но это не работает вне?

Что еще я могу сделать?

Спасибо за помощь заранее!

+1

Привет. Добро пожаловать в Stackoverflow. Из R-wiki *, R - свободный язык программирования с открытым исходным кодом и программная среда для статистических вычислений, биоинформатики и графики. Пожалуйста, добавьте свой вопрос с минимальным воспроизводимым примером. Для статистических вопросов, пожалуйста, используйте http: //stats.stackexchange.com. Кроме того, убедитесь, что [совершите SO-тур] (http://stackoverflow.com/tour) и, по крайней мере, просматриваете [страницы справки SO] (http://stackoverflow.com/help). – A5C1D2H2I1M1N2O1R2T1

+0

Вы также должны внимательно прочитать сообщения об ошибках и опубликовать полное сообщение об ошибке, а не писать «не работает». Когда вы пытаетесь назначить индексом LHS, а индексируемый объект не существует, вы получаете ошибка. –

ответ

3

Для этого не нужен цикл for. Вы можете использовать lapply:

## First, make up some sample data 
set.seed(1) 
mylist <- replicate(2, sample(0:1, 9, TRUE), FALSE) 

## Let's work on a copy in case you need the original 
m <- mylist 
m 
# [[1]] 
# [1] 0 0 1 1 0 1 1 1 1 
# 
# [[2]] 
# [1] 0 0 0 1 0 1 0 1 1 

## Here's the actual transformation 
m[] <- lapply(m, matrix, nrow = 3, byrow = TRUE) 
m 
# [[1]] 
#  [,1] [,2] [,3] 
# [1,] 0 0 1 
# [2,] 1 0 1 
# [3,] 1 1 1 
# 
# [[2]] 
#  [,1] [,2] [,3] 
# [1,] 0 0 0 
# [2,] 1 0 1 
# [3,] 0 1 1 
0
m=list() 
for (i in 1:length(mylist)){ 
m[[i]] = matrix(mylist[[i]], nrow=3, ncol=3, byrow=TRUE) 
} 

> m 
[[1]] 
    [,1] [,2] [,3] 
[1,] 0 0 1 
[2,] 1 0 1 
[3,] 1 1 1 

[[2]] 
    [,1] [,2] [,3] 
[1,] 0 0 0 
[2,] 1 0 1 
[3,] 0 1 1 
Смежные вопросы