2013-09-29 5 views
2

나는 다음과 같은 코드를 사용하여 만든 많은 변수를 가지고 :R은 - 유사한 이름을 가진 여러 변수에 rbind 사용

지금 그들을 결합하는 변수에 rbind 사용할 필요가
for (i in 1:10) { 
    assign(paste0("variable", i), i)} 

. 나는 무언가를 이렇게 무언가를 시도했다 :

rbind(assign(paste0("variable", 1:10))) 

무엇에 관한 어떤 제안?

답변

9

관련 항목을 처리하는 것은 잘못된 방법입니다. 목록이나 데이터 프레임을 사용하는 것이 더 좋지만, 당연히 이유를 알아낼 것입니다. 지금 :

do.matrix <- do.call(rbind, lapply(ls(patt="variable"), get)) 

또는 :

do.matrix <- do.call(rbind, lapply(paste0("variable", 1:10) , get)) 
+0

동일한 패턴을 가진 다른 변수가없는 경우에만 작동합니다. 예를 들어, 원래 코드에서 for 루프를 최대 1000으로 설정 한 다음 다시 10으로 설정하면 do.matrix 변수의 행 수가 너무 많아집니다. – bill999

+0

고마워요, @DWin. 내 의견에 대한 귀하의 후속 조치가 정확했습니다. 사과드립니다. 이 추가 코드 줄을 보내 주셔서 감사합니다. 이것이 내가 필요한 것입니다. – bill999

1

나는 동적 이름을 가진 여러 dataframes을 병합하는 또 다른 방법을 추가하고 싶습니다. 이것은 mgetbind_rowsdplyr에서 사용하여 수행됩니다.

# 3 Data frames are created 
TXN_MONTH_01 <- data.frame(a = 1:10, b = 101:110) 

TXN_MONTH_02 <- data.frame(a = 11:20, b = 111:120) 

TXN_MONTH_03 <- data.frame(a = 21:30, b = 121:130) 

#create a list using dynamic names of dataframes 
z <- as.list(mget(paste("TXN_MONTH_0", 1:3, sep=""))) 
library(dplyr) 
#now call bind rows 
bind_rows(z) 
# a b 
#1 1 101 
#2 2 102 
#3 3 103 
#4 4 104 
#5 5 105 
#..... 
#..... 
#25 25 125 
#26 26 126 
#27 27 127 
#28 28 128 
#29 29 129 
#30 30 130