2016-09-26 2 views
0

함수 밖에서 나중에 사용할 수있는 함수에서 행렬을 만드는 방법을 아는 사람이 있습니까? 행렬에 인수에서 사용하는 이름이 필요합니다. 이것은 지금까지 내 코드입니다 : R : 함수 입력 이름으로 행렬을 생성 하시겠습니까?

newacc <- function(accname){ 
    accname <<- matrix(data=0, nrow=1, ncol=2) 
    colnames(accname) <- c("DEBIT", "CREDIT") 
    return(accname) 
    } 

그래서 내가 인수 accname을 위해 제공 입력이 함수의 외부에서 생성 된 행렬의 이름이되고 싶어요. 현재 입력 accname = accname을 주면 함수 외부의 행렬 만 생성 할 수 있습니다.

내가 도움 :

감사합니다 모든 종류의 매우 감사하게 될 것입니다

+0

당신은'assign' 즉'지정 (accname, 값 = 매트릭스 (데이터 = 0, nrow = 1을 NcoI = 2, dimnames = 목록 (NULL, C ("직불", "신용")을해야 할 수도 있습니다)), envir = parent.frame())'함수 안에 – akrun

+1

다른 환경에 의존적 인 객체를 갖는 것은 좋지 않다. –

+0

이미 행렬을'return '하고있다. 함수 밖에서 할당하면된다. 함수 이름을 갖는 것에 대해). 'accname <- newacc()'. ... 당신의 함수는'newacc = function() {m <- matrix (data = 0, nrow = 1, ncol = 2); colnames (m) <- c ("DEBIT", "CREDIT"); return (m)}' – Gregor

답변

0

당신이 함수 환경에서 변수 이름을 지정 희망하는 이유에 일부 내용을 제공하는 것이 유용 할 수 있기 때문에이 고용 할 또 다른 전략 일 수 있습니다.

주로 표준 할당 구조를 피하려고하는 경우 다른 환경에서 종속 개체가 필요하지 않은 대안이 있습니다. 대신

accname <- newacc(accname) 

당신이 할당()과 같이 사용할 수의

:

assign("accname", newacc(accname)) 

편집 :

나는이 잘못된 읽기 수 있습니다,하지만 난 것을 확인하고 싶은 당신 변수 이름이 함수 내부에 무엇인지는 중요하지 않습니다. 동일한 함수를 다시 사용하려고하지만 출력 변수 이름의 이름이 다른 경우에는 함수를 호출 할 때 수행 할 작업입니다.

새로운 R 세션에서 다음 코드를 실행 해보고 원하는 유형의 기능을 알려주십시오. 반환하는 행렬이 함수 내에서 acc으로 어떻게 불려지는지 주목하십시오. 실제로 함수를 호출하면 새로운 변수는 함수가 반환 할 함수를 말한 것입니다.

newacc <- function(x){ 
    acc <- matrix(data=x, nrow=1, ncol=2) 
    colnames(acc) <- c("DEBIT", "CREDIT") 
    return(acc) 
} 

accname <- newacc(0) 

accname2 <- newacc(10) 

accname3 <- newacc(20) 
+0

답변 해 주셔서 감사합니다! 간단한 서적 유지 도구를 쓰고 싶습니다. 사용자는 newacc (자산)을 작성하여 차변 및 대변 열을 사용하여 새 t- 계정을 개설 할 수 있어야합니다. 문제는 전역 환경에서 생성 된 행렬이 함수에서 변수로 주어진 이름을 가져야한다는 것입니다. – cholz

+0

그래서 입력 변수를 행렬로 덮어 쓰는 것이 좋습니다. – jmartindill

+0

다소 차이가 있습니다. 또는 입력 변수의 이름이있는 행렬을 만들 수 있습니다. – cholz