2012-09-11 3 views
3

그래서 R을 사용하여 분석 할 데이터 세트의 폴더를 자동으로 만들려고합니다. 게으름으로 인해이 폴더를 만들고, 데이터를 분석하고, 결과를 해당 폴더에 저장하여 나중에 볼 수 있도록하는 기능이 작성되었습니다. 지금은 라이브러리에서 항공기 데이터를 사용 (robustbase)하려고하면함수 안에 폴더 만들기

: 내가 얻을

setwd("C:/Users/Admin/Desktop/") 
analysis<-function(dataset,other_bit_and_pieces){ 
paste("dir.create(",dataset,")",sep="") 
} 

analysis(aircraft) 

을 하나 aircraft (나는 라이브러리를로드하는 경우),이 옷을 사는 존재하지 않거나 없다는 오류 메시지 out "dir.create(c(all the data from aircraft))"

데이터 집합을 변경할 때마다 새 폴더가 데이터 집합 이름으로 만들어 지도록 어떻게 작성해야합니까? 나는 다음과 같은 것을 이해할 수있는 것과

+1

알부틴, 그건 게으름이 아닙니다. 그것은 지능입니다. 소프트웨어를 지루하고 반복적 인 작업으로 만드십시오! –

답변

3

이 어떻게 작동하는지에 대한 ?match.call에서

mydata <- data.frame(x=1:10) 

analysis <- function(object){ 
    dir.create(as.character(as.list(match.call())[2])) 
} 

analysis(mydata) 
# will create a directory 'mydata' as a subdirectory of the current working directory. 

봐 작동합니다!

4

여기에 대한 일반적인 R idiom은 deparse(substitute(....))입니다.

analysis <- function(object, create = FALSE){ 
    dirname <- deparse(substitute(object)) 
    if(create) { 
     dir.create(dirname) 
    } 
    dirname 
} 

> mydata <- data.frame(x=1:10) 
> analysis(mydata) 
[1] "mydata" 

사람들이 테스트를 거치고 있기 때문에 기존의 dir을 없애기 위해 자동으로 dir을 만들지 않도록 기능을 변경했습니다. 그것이 작동 중임을 나타 내기 위해 dirname을 반환합니다. 실제로 if()부터는 아무 것도 필요하지 않습니다.