순차적 이름을 가진 벡터를 스택 싶습니다.R, 순차적 이름을 가진 벡터 결합
예를 들어, 나는
a1<-1:3
a2<-4:6
a3<-7:9
내가 아는
이 그 나는 수 당신z<-as.vector(rbind(a1,a2,a3))
내가 할 수있는 방법이 나는 등의 (100)이있는 경우 A1, A2, A3, ... , a100?
감사합니다.
순차적 이름을 가진 벡터를 스택 싶습니다.R, 순차적 이름을 가진 벡터 결합
예를 들어, 나는
a1<-1:3
a2<-4:6
a3<-7:9
내가 아는
이 그 나는 수 당신z<-as.vector(rbind(a1,a2,a3))
내가 할 수있는 방법이 나는 등의 (100)이있는 경우 A1, A2, A3, ... , a100?
감사합니다.
get()
을 사용하여 변수에 액세스 할 수 있습니다. 다음과 같이 보일 것이다 귀하의 예는 다음과 같습니다
a_list <- list()
for(i in 1:3){
a_list[[i]] <- get(paste0("a",i))
}
z <- as.vector(do.call("rbind",a_list))
또는 lapply
사용 : 그런 다음이 예를 할 수
as.vector(do.call("rbind",lapply(1:3,function(x){get(paste0("a",x))})))
i in 1:100
또는 무엇이든 필요합니다.
mget
을 사용할 수 있습니다. 다음 결과는 exmple 코드와 동일한 출력입니다. 1:3
을 1:100
으로 변경할 수 있습니다.
as.vector(matrix(unlist(mget(paste0("a", 1:3))), ncol = 3, byrow = TRUE))
[1] 1 4 7 2 5 8 3 6 9
니스, 나는'모르겠다. ' –
당신은 목록 'LST', 당신은 단순히 do.call 부를 수의 구성원 (rbind, LST), 또는 do.call (C, LST)로 모든이 있다면 - 또는 올라가지 (LST). 그래서 트릭은 변수를 목록으로 가져 오는 것입니다. 'ls'를 사용하여 원하는 변수 이름을 반환 한 다음 해당 이름에 mget을 사용할 수 있습니다.
do.call (c, mget (ls (pattern = "a [0-9] + ")))
여기서 패턴은 글로벌 환경에서 a123 형식의 모든 변수를 찾는 정규 표현식입니다.
고마워. 내가 이렇게 할 때, '무엇이'함수 또는 문자열이어야한다. 메시지가 나왔다. 좀 더 도와 줄 수있어? –
'c'는 일반적으로 함수이므로 재정의했을 수 있습니까? do.call (rbind, ...)을 시도해보고 더 잘 작동하는지 확인하십시오. –
예상되는 결과는 무엇입니까? –