2011-12-15 4 views

답변

8

두 개의 For 루프 대신 Table을 사용해보십시오. 이 결과 목록의 목록 (기본적으로 매트릭스) 그것은 당신이 저장하려는 데이터 나에게 분명하지 않다

Table[ 
abc = doc[[n]]; 
kk = doc[[m]]; 
v = vector[abc, kk]; 
vl = VectorLength[v], {n, 1, 5}, {m, 1, 5}] 
+0

이것은 루프에 있습니까? – user1100792

+0

아니요 그냥 실행하면 결과 목록 (기본적으로 행렬)이 반환됩니다. – acl

+0

감사합니다. @yoda, 나는 원래의 대답에서 설명 테스트에 붙여 넣지 않았다는 것을 알지 못했습니다. – acl

4

을 반환하지만이 작업을 수행하는 일반적인 방법은 SowReap을 사용하는 것입니다.

Reap[ 
    For[n = 1, n < 6, n = n + 1, For[m = 1, m < 6, m = m + 1, 
    abc = doc[[n]]; 
    kk = doc[[m]]; 
    Sow[v = vector[abc, kk]]; 
    vl = VectorLength[v]]] 
][[2, 1]] 

이렇게하면 v = vector[abc, kk]의 모든 값이 저장됩니다. Part 추출 [[2, 1]]은이 목록 만 반환합니다. 여러 데이터 세트를 저장하려면

, 당신은 Sow 내에서 태그를 사용할 수 있습니다 : 여기

Reap[ 
For[n = 1, n < 6, n = n + 1, For[m = 1, m < 6, m = m + 1, 
    abc = doc[[n]]; 
    kk = doc[[m]]; 
    Sow[v = vector[abc, kk], "v"]; 
    Sow[vl = VectorLength[v], "v1"] 
]] 
] 

은 내가 Part 추출을 생략합니다. 출력은 {body, {{data1, ...}, {data2, ...}}}에서입니다. 여기서 body는 표현식 자체의 출력입니다 (For의 경우 Null). 데이터 세트는 처음에 뿌려진 순서대로 나타납니다. 다음과 같이 Reap의 또 다른 인수 세트의 명시적인 순서를 얻을 수 있습니다 :

Reap[ 
    For[ ... ], 
    {"v1", "v"} 
] 

더 많은 옵션에 대한 심 설명서를 참조하십시오.

+0

괜찮습니다. 나는이 방법을 시도 할 것입니다. – user1100792

관련 문제