2016-10-05 2 views
0

모든 데이터 세트의 이름을 개별적으로 호출하지 않고 루프를 사용하여 데이터 세트 그룹에서 동일한 기능을 수행 할 수 있기를 원합니다. 각 호출하지 않고도목록 개체를 사용 가능한 행렬 이름으로 변환

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

그런 다음 나는 matricies 모두의 두 번째 열을 합계를 :

a<-matrix(1:5,nrow=5,ncol=2) 
b<-matrix(6:10,nrow=5,ncol=2) 
c<-matrix(11:15,nrow=5,ncol=2) 

나는 세트 이름의 벡터를 정의 예를 들어, 나는 다음과 같은 matricies이 있다고 행렬 이름. 기본적으로 SetNames[1]으로 전화하여 apply(a[2],2,sum)을 호출하는 데 사용할 수있는 USEABLE 텍스트로 'a'를 반환하도록 할 수 있습니다.

apply(SetNames[1][2],2,sum)이 작동하면 기본 구문이되고 싶지만 1을 루프에서 증가시킬 수있는 변수로 바꿉니다.

+1

'SetNames <- [A, B, C]이 'R 정확한 구문 아니다. –

답변

1

sapply 할 수 있습니다.

sapply(SetNames, function(z) { 
    dfz <- get(z) 
    sum(dfz[,2]) 
}) 
# a b c 
# 15 40 65 

여기서 get()은 변수에 동적으로 액세스하는 데 사용됩니다.

이 글을 쓰는 덜 컴팩트 방법은

sumRowTwo <- function(z) { 
    dfz <- get(z) 
    sum(dfz[,2]) 
} 
sapply(SetNames, sumRowTwo) 

것 그리고 지금 당신은 sumRowTwo 함께 놀러 볼 수있는 예를 들어,

sumRowTwo("a") 

복귀