2014-12-01 6 views
0

데이터 프레임을 동적으로 만들고 참조해야합니다. 지금까지 동적으로 원하는 데이터 프레임을 만들 수 있습니다은 동적으로 생성 된 데이터 프레임을 참조하십시오.

master<-c("bob","ed","frank") 
d<-seq(1:10) 
for (i in 1:length(master)){ 
    assign(master[i], d) 
} 

ed[6] 

을 지금은 내가 "ED"개체가 볼 수

ls() 

을합니다. 나는 이름을 언급하지 않고 그것의 데이터를 조작하는 것을 참조하고 싶다.

즉, 대신 일을 "에드 [6]"

내가 같은 변수에 "ED"를 갖고 싶어 :

master[2][6] # BUT THIS DOES NOT WORK 

또는

df<-"ed" #this does not work either 
df[6] 

내 요점은 명명 데이터 프레임이 동적으로 참조 할 수있게되었습니다. 어떻게해야합니까?

감사합니다.

답변

0

get을 사용하십시오.

get(master[2])[5] 
get(master[2])[2] 

값을 설정하려면 assign을 사용해야합니다. 그러나주의해서, 전체적으로 값을 지정합니다. 내 말은 당신이 벡터의 한 값을 설정할 수 없다는 것입니다, 당신은 전체 벡터를 설정할 필요가 있습니다.

master<-c("bob","ed","frank") 
d<-seq(1:10) 
for (i in 1:length(master)){ 
    assign(master[i], d) 
} 

ed[6] 

get(master[2])[5] 
get(master[2])[2] 

temp <- get(master[2]) 

# assign value 20 to index 5 
assign("ed",20) 

assign("ed[6]",20) # it creates a variable named "ed[6]", not what you want 

ls(pattern = "^ed.*$") 

temp[6] = 20 

assign("ed",temp) 
rm(temp) # remove temp if you do not need it 

get("ed")[6] 
+0

값을 설정할 수 있습니까? get (master [2]) [5] <- 600? 그 오류를 반환합니다 – user3022875

+0

@ user3022875 내 대답을 편집 한 –

0

아틸라에서 알 수 있듯이 당신은 get을 사용할 수 있지만, 이런 경우에 당신은 목록을 작성하고 대신리스트 인덱스로 객체를 참조 나을 수 있습니다. 하나의 객체를 만들고 전체 묶음을 만드는 것이 더 멋지 며 내용을 참조하는 것은 간단합니다.

# create empty list 
my_list <- list() 

# put stuff in the list  
for (i in 1:length(master)) { 
    my_list[[i]] <- d 
} 

# get the 6th element from the 2nd object in my_list 
my_list[[2]][6] 
관련 문제