2017-05-03 1 views
0

몇 달 전, 나는 다음을 할 수있는 함수를 찾고 seraching했습니다. 스크립트 A에서 스크립트 B를 n 번 실행할 수있었습니다. 결과적으로 n 개의 요소가있는 목록을 만들고 각 목록 요소에는 스크립트 B의 마지막으로 요청 된 개체 만 포함됩니다. 예를 들어 스크립트 B의 마지막 줄에 일부 데이터 수단으로 구성된 벡터가 포함되어 있으면 목록에는 해당 벡터 만 포함됩니다. 더 이상이 기능을 찾을 수 없습니다.R : 스크립트를 n 번 실행하여 마지막 요청 만 인쇄하는 기능

다음은 내가해야 할 일입니다. 내 스크립트 B에는 시뮬레이션 된 데이터에 대해 수행 된 시뮬레이션 및 계산이 포함되어 있습니다. 결과적으로 스크립트는 행렬을 인쇄합니다. 이 스크립트를 n 번 다시 실행하여 결과 행렬을 포함하는 n 개의 요소가있는 목록을 얻고 싶습니다.

보너스은 스크립트 B에서 seed를 변경할 수 있습니다. 즉, set.seed (1)로 시뮬레이트 된 데이터가 들어있는 list [[1]]입니다.

이 문제는 적용 제품군의 기능을 요구합니다. 다음 예에서 source()는 함수로 채택되지 않았습니다.

희망이 있습니다. 미리 감사드립니다!

+0

'lapply'를'replicate'으로 대체하십시오. 그리고 스크립트의 마지막 라인이 원하는 행렬을 출력하고'print()'명령문이 아닌지 확인하십시오 ('print()'는'NULL'을 출력합니다) –

답변

0

내가 사용한다고 생각 :

lapply(1:n, function(x) source("test.R")) 

씨앗을 변경하는 가장 쉬운 방법은 씨앗과 입력 매개 변수로 스크립트에서 함수를 만드는 것입니다.

+0

나는 그것이 내가 찾던 하나라고 생각합니다. "입력 매개 변수가있는 스크립트에서 함수를 만드는 방법"이란 무엇을 의미하는지 다시 설명 할 수 있습니까? –

+0

Val의 대답을보고 스크립트의 기능을 만드는 방법을 설명합니다. –

-1

스크립트 B은 간단합니다 매트릭스 반환하는 함수가 될 수있는 경우 :

스크립트 B : (functionB.R 등) :

functionB <- function(x){ 

    set.seed(x) 

    return matrix(runif(100),ncol=10) 

} 

스크립트 A :

source('functionB.R') 

lapply(1:10,function(x) functionB(x)) 
관련 문제