2014-05-14 1 views
1

일련의 이미지를 만들고 싶지 않은 희소 매트릭스 목록이 있습니다. 루프에서이 작업을 수행하여 GIF 또는 mpg로 변환 할 수 있기를 원합니다.매트릭스 패키지의`image`는 루프에 플롯이 보이지 않습니다.

matrix() 명령을 사용하여 생성 된 행렬에 대해 올바르게 수행 할 수 있지만 sparseMatrix()을 사용하여 생성 한 경우에는 작동하지 않습니다. 는 예를 들어,이 작품 :

그것은 내가 (앞뒤로 역사를 통해 이동하여) 활성 플롯 창에서 볼 수있는 4 플롯을 추가하는 결과
mList<-list() 
    for (i in 1:4) {mList[[i]]<-matrix(runif(16),nrow=4,ncol=4)} 
    for (i in 1:4) {image(mList[[i]])} 

이 작동하지 않습니다

mList<-list() 
    for (i in 1:4) {mList[[i]]<-sparseMatrix(i=1:4,j=1:4,x=runif(4))} 
    for (i in 1:4) {image(mList[[i]])} 

아무 반응이 없습니다. 이미지는 전혀 생성되지 않지만 오류 메시지가 표시되어 이유를 알 수 없습니다. 각 매트릭스 이미지를 독립적으로 볼 수 있습니다. image(mList[[1]])하지만 어떤 이유로 for 루프에서 작동하지 않습니다.

무슨 일이 일어나는지 아는 사람이 있습니까?

+0

이 ** SparseM ** 패키지는'image' 방법을 가지고 나타납니다 볼 수 있지만 내가 스파 스 매트릭스에 대한 ** 매트릭스 ** 한 표시되지 않습니다. 나는 틀린 장소에서 단지보고있을 수 있었다. – joran

+0

질문을 게시 한 다음 upvote 또는 정답을 표시하는 데 실패한 것은 대단히 비판적이라고 생각합니다. 단지 당신이 모든 목표를 포함하지 못했기 때문에 당신의 (끝장이없는, 궁극적 인) 목표를 향한 점진적인 단계에 긍정적 인 고려를하지 않는 이유는 근시안입니다. –

답변

1
for (i in 1:4) { plot(image(mList[[i]])) } 

트릭을 수행합니다.

lapply(mList, image) 

도 작동합니다.

개체를 반환합니다 (lattice 패키지 참조). print.trellis 함수는 R 콘솔에 입력 된 트 렐리 스 객체를 자동으로 플롯합니다. 그래서 image(mList[[i]])가 작동합니다. 그러나 for 루프에서는 print.trellis 함수가 호출되지 않으므로 줄거리가 만들어지지 않습니다. 플롯을 실제로 표시하려면 print(image(mList[[i]])) 또는 plot(image(mList[[i]]))을 사용해야합니다. 자세한 내용은

?lattice 
getMethod(Matrix:::image,"dgCMatrix") 
getMethod(Matrix:::image,"dgTMatrix") 
lattice:::print.trellis 
lattice:::plot.trellis 
+0

실제로 이미지를 만드는 데 성공합니다. 불행히도, 나는리스트를 애니메이션 제작자들에게 공급할 방법을 찾을 수는 없지만 적어도 손으로 제작하는 것보다 낫다. – wmsmith

+0

많은 의미가 있습니다. 그것은 plot()으로 랩핑 할 때 완벽하게 작동하며 GIF 및 HTML 애니메이션도 만들 수 있습니다. 고마워요! – wmsmith