2017-12-14 11 views
-2

인수에 따라 이름을 만드는 함수를 만들고 싶습니다. 나는 시도 :R- 변수의 이름을 생성하는 함수 생성하기

a <- function(x){ assign(paste("train",x,sep=""),4]) } 

을하지만 난 예를 들어 a(3)을 수행 할 때 아무 일도 발생하지 않습니다. 뭐가 문제 야?

도움 주셔서 감사합니다.

편집 : 요청에 따라 구체적으로 설명 드리겠습니다.

기능 선택을 원합니다. 기능은 기능의 여러 부분 집합을 생성하고 각 부분 집합에 대해 학습 세트를 생성 한 다음이 기능의 출력을 다른 기능에서 사용하는 것입니다 (lm())를 사용하여 각 교육 세트를 테스트합니다. 부분 집합/훈련 집합의 수는 가변적이며 나중에이를 다시 사용하기 위해 저장하는 방법을 알지 못합니다.

+3

할당이 글로벌 환경에서 수행되지 않았습니다. (의미가 무엇인지 모르는 경우'assign'을 사용하지 마십시오.)이 질문에는 유스 케이스가 필요하므로보다 정확한 방법을 제안 할 수 있습니다. 많은 "느슨한"변수를 만드는 것은 나쁜 생각입니다. 프로그래밍 방식으로 관리하는 것이 좋습니다. –

답변

-1

변수를 전역 환경 (또는 변수를 살려 둘 환경)에 지정해야합니다.

> a <- function(x) { assign(paste('train', x, sep = ''), 4, envir = .GlobalEnv) } 
> ls() 
[1] "a" 
> a(1) 
> ls() 
[1] "a"  "train1" 
+3

예, 작동합니다 (+1).하지만 대부분의 경우 @mobupu, 할 일은 무엇이든 할 수있는 잘못된 방법입니다. 일반적으로 '할당'은 함수 내에서 지구 환경에 이르기까지 회피해야합니다. 이런 식으로 할 수있는 R 고유의 방법이 두 가지 있습니다.이 방법은 읽기 어려운 코드로 이어져 버그를 만듭니다. – Aaron

+0

R 기본 방식은 무엇입니까? 틀림없이 나는 내 작업에'할당 '을 사용하지 않습니다. 나는 그것을 읽는 것이 어렵다는 것에 동의한다. – Max

+0

사용 사례가 무엇인지 모른 채 정확하게 말하기는 어렵지만 가능성이있는 것은 목록이있는 것입니다. 그냥 myvars <- list(); a <- 함수 (mylist, name, number) {mylist [[name]] <- number; mylist}'가능성이 있습니다. – Aaron