2017-12-14 36 views
3

벡터의 문자 값을 사용하여 새 객체의 이름을 지정한 다음 새 객체를 새 행렬로 만들려고합니다. 그래서 나는 다음과 같은 벡터가있는 경우 :벡터 값의 이름 객체

나는이 코드는 것을 깨닫는 "A"라는 이름의 객체를 만들기 위해 루프, "B"및 "C"

for(i in 1:length(Named)){ 
Named[i] <- matrix(0L, nrow = 3, ncol = 3) 
} 

가되고 싶어

Named <- c("a", "b", "c") 

현재 벡터에 데이터를 입력합니다. 새 객체의 이름으로 사용하기 위해 Named [i]에서 문자를 추출하려면 어떻게해야합니까?

루프는이 코드를 작성 같은 일을 않도록 :

a <- matrix(0L, nrow = 3, ncol = 3) 
b <- matrix(0L, nrow = 3, ncol = 3) 
c <- matrix(0L, nrow = 3, ncol = 3) 

답변

1

1)를 할당 당신이 지구 환경에 그것들을 할당해야하는 경우 일반적으로 하나가 목록에 값을 할당하고 싶지만 것 이미 지구 환경 수준에서이 일을하는 경우

for(nm in Named) assign(nm, matrix(0L, 3, 3), .GlobalEnv) 

는 다음 선택적으로에 마지막 인수를 생략 할 수있다 : 다음이는 for 루프에 대한 좋은 응용 프로그램입니다3210.

2) 인덱스 지구 환경이는 것 작동 :

for(nm in Named) .GlobalEnv[[nm]] <- matrix(0L, 3, 3) 

3) 또 다른 방법은 다음 지구 환경에 구성 요소를 복사 할 list2env를 사용하여 목록을 작성하는 것입니다을 list2env.

list2env(Map(function(x) matrix(0L, 3, 3), Named), .GlobalEnv) 

4) 하드 참고 코딩 당신은 할당 할 몇 가지 요소를 가지고 당신은 변수에 의해이 같은 같은 Named 당신이 할 수 단지 하드 코드를 매개 변수화 할 필요가없는 경우 :

a <- b <- c <- matrix(0L, 3, 3) 

5) 목록 결국 당신이 다음 대신 지구 환경에있는 개체의 목록을 작성하기로 결정하는 경우 :

L <- Map(function(x) matrix(0L, 3, 3), Named)