2016-10-19 2 views
0

배열 작업을하려고하는데 데이터 용으로 만들 수없는 것 같습니다. 나는 배열에 넣고 싶은 14 행렬을 가지고 있지만 수동으로 c (m1, m2, m3 ...)를 쓰지 않고 그것을 수행하는 방법을 알아낼 수는 없다.배열에 많은 수의 행렬을 만들었습니다.

this

m_list <- mget(paste0("well_", 0:13)) ###to make a list of all my matrices 

a <- array(c(m_list), 
     dim = c(7338, 15, 14)) 

하지만 난 뭔가를 만들어 배열에서 볼 때 나는 다음과 같이 하나 개의 값을 요구하려고 원인 그것으로 옳지 않다 : 내가 뭘하려

print(a[1,4,2]) 

하지만 난을 전체 열을 가져옵니다.

오류가 행렬 목록에 있다고 가정합니다. 도와주세요

+0

'do.call (c, m_list) '; 또한 abind 패키지를 확인하십시오. – Roland

답변

0

질문에 대한 대답은 c(m_list) 대신 do.call(c, m_list)을 사용해야한다는 것입니다. 작은 매트릭스를 몇 개 가져 와서 c(m_list)c(m1, m2)이 무엇을 반환하는지 확인해보십시오.

배열을 사용하여 작업하는 것이 더 나은지 생각해보십시오. 더 중요한 것은 어떻게 할 수 있겠습니까? 먼저 여러 행렬을 사용하지 않고 목록 또는 배열로 직접 읽거나 정의하십시오.

+0

고맙습니다. 작동 중입니다. :) 나는 데이터를 잘못 호출해야한다고 생각했지만이'do.call' 함수에 익숙하지 않았습니다. – BStat

+0

코드를 약간 수정하려고하는데, 정말 열심히 일하고 있지만 며칠 동안 아무 일도 일어나지 않습니다. 나는 가족과 루프를 적용해도 여전히 좋지 않다. (가능한 한 루프를 피하기 위해 말했지만). 그래서 당신이 말하는 것은'm_list'로 직접 작업을 시작할 수 있다는 것입니다. ?? – BStat

+0

@BStat, 예, 때로는 좋은 생각 일 수 있습니다. 그것은 당신이 당신의 데이터로 무엇을 할 것인지에 달려 있습니다. 학습을 위해 데이터를 배열로, 동시에 목록으로 사용하여 어떤 차이가 있는지 확인할 수 있습니다. – Julius

0

c 대신 array 함수 호출 내에서 unlist을 간단하게 사용할 수 있습니다.

a = array(unlist(m_list), dim = c(dim(m_list[[1]]), length(m_list))) 

일부 재현 데이터 :

m1 = matrix(1:5, 5, 5) 
m2 = matrix(5:1, 5, 5) 
m_list = list(m1, m2)