2015-02-01 5 views
0

데이터 프레임 목록 (variables)을 사용하고 출력으로 두 개의 데이터 프레임 (목록의 모든 데이터 프레임)을 제공하는 함수가 있습니다. 다른 변수 이름 (up.valdown.val 대신)과 다른 파일 이름 변수 벡터와 파일 이름은 모두 내가 만든 문자 벡터에 저장되어 있습니다.다른 변수 이름을 가진 루프를 whitin으로 저장하기

filtering_data <- function(x){ 

    x <- as.data.frame(x) 
    pval <- which(x$P.Value < 0.05) 
    pval <- x[pval,] 


    up.pval <- which(pval$t > 0) 
    down.pval <- which(pval$t < 0) 

    up.pval <- pval[up.pval,] 
    down.pval <- pval[down.pval,] 

    save(up.pval, file = file.Rda) 
    save(down.pval, file = file.Rda) 
    } 

lapply(variables, filtering_data) 
+1

그냥 보조 노트를 정의되어 오히려 가정보다, 인수해야한다, 나는 이미 기본 R이있는 한 함수'filter' 명명 권하고 싶지 않다 'stats' 네임 스페이스에서'filter' 함수를 사용하십시오. – nrussell

+0

감사합니다. 함수의 이름을 변경하겠습니다. – biorunner88

답변

0

난 당신이 새 이름에 값을 할당 할 assign를 사용하고 savelist 인수로 변수 이름을 제공 할 생각합니다. 같이 : 덧붙여

filtering_data <- function(x,varName,file.rda){ 

    [calculations go here]] 

    # assign() only assigns one value so check the length of varName 
    stopifnot(length(varName)==1) 

    # make the new variable names 
    name.up <- paste0(varName,'.','up') 
    name.down <- paste0(varName,'.','down') 

    # assign the values to them in the current environment 
    assign(name.up,up.pval) 
    assign(name.down,down.pval) 

    # save the named variables 
    save(list=name.up, file=file.rda) 
    save(list=name.down,file=file.rda) 
} 

, file.rda 아마 이미

+0

작동하지 않습니다. 'varName'과 같은 함수에 더 많은 변수를 추가하면'Error en pval $ t : $ operator는 원자 벡터에 유효하지 않습니다. '와 같은 내용이 반환됩니다. 4 줄의 코드를 추가하면 다음과 같은 오류가 발생합니다. '오류 저장 (list = up_varNames, file = file.Rda) : objects'top_k1.up ','top_k2.up ','top_Na1. 위로 가기 ','top_Na2.up ','top_ox.up ','top_ter.up ','top_ypd.up '을 찾을 수 없음' 및 '메시지가 분실 됨 1 : 할당시 (up_varNames, up.pval) : 첫 번째 요소가 변수 이름으로 사용됩니다. 다른 할당 선과 동일합니다. – biorunner88

+0

왜냐하면'assign'은 하나의 변수 만 현재 환경에 할당하기 때문입니다. 변수 이름 ('seq_along (name.up)의 i) for assign (name.up [i], up.pval [i]))을 반복해야합니다. 그래서'save'에서 에러 메시지를받는 것입니다. – Jthorpe

+0

'pval $ t'에 대한 오류는'pval'이 원자 벡터 (숫자 일 가능성이 높고 클래스 (pval)을 사용하여 찾을 수 있음)라고 알려줍니다. 't'가 게시물에 정의되어 있지 않기 때문에't'가 무엇인지 그리고 왜 이것을 사용하고 있는지 알 수있는 방법이 없습니다. 어쨌든,'$'연산자는 벡터에 정의되어 있지 않다. 아마도 당신은'pval [t]'를 원할 것입니다. – Jthorpe

관련 문제