2016-10-18 11 views
2

사용자가 파일을 업로드 할 수있는 반짝이는 응용 프로그램이 있습니다. 이 파일에 1 개 또는 2 개의 데이터 시트가 있는지에 따라 기능이 달라야합니다. 나는에 Data_IN 경로입니다 read.xlsx와 데이터 시트를 가져옵니다 데이터 시트가 있는지 확인하십시오. R

data <-read.xlsx(data_in,1,1,colNames=TRUE) 

그래서이 파일의 첫 번째 시트입니다. 두 번째 시트는 같은 방법으로 가져올 수 있습니다. 그러나 두 번째 시트가없는 경우 예를 들어 경고를 붙이거나 다른 방식으로 계속 처리하는 것이 좋습니다.

두 번째 시트가 데이터 파일에 있는지 여부를 확인하는 방법은 무엇입니까?

감사합니다.

감사

답변

1

답변 위에서 멋지게 특정 문제에 대한 해결책을 지적한다. 이러한 문제에 대한 일반적인 해결책을 추가하고자합니다. tryCatch()을 살펴볼 수 있습니다. 코드에서 오류 또는 경고가 발생할 경우 수행 할 작업을 정의 할 수 있습니다.

result <- tryCatch({ 
     # The code you want run 
    }, warning = function(war) { 
     # Is executed if warning encountered 
    }, error = function(err) { 
     # Is executed if error encountered 
    }) 

예에서 두 번째 시트를 읽고 오류가 발생하면 어떻게해야하는지 정의 할 수 있습니다.

+0

나는 실제로 이것 역시 좋아한다. 오류에서 계속한다는 생각은 나를 위해 알려지지 않았기 때문에 나는 그것을 피하려고합니다. 대신, 이것이 핵심 문제를 더 해결할 수 있다고 생각합니다. 감사. – Piet93

3

XLConnect 패키지에 엑셀 파일의 시트의 존재를 확인하는 방법 existsSheet 있습니다.

당신은 다음과 같은 시도 할 수 있습니다 :

# mtcars xlsx file from demoFiles subfolder of package XLConnect 
demoExcelFile <- system.file("demoFiles/mtcars.xlsx", package = "XLConnect") 

# Load workbook 
wb <- loadWorkbook(demoExcelFile) 

# Check for existence of a worksheet called 'mtcars' 
existsSheet(wb, "mtcars") 

자세한 내용은 this를 참조하십시오 : 당신을 "목록 엑셀 스프레드 시트의 모든 시트"순서로 readxl 패키지의 excel_sheets 기능을 사용할 수

+0

답장을 보내 주셔서 감사합니다. @ Nishu Tayal. 그것은 유용한 방법이지만,이 경우 워크 시트의 이름을 알아야하기 때문에 최선의 방법은 아닙니다. 나는 사용자가 그의 워크 시트를 어떻게 불러야 하는지를 정의하지 않으며, 더 많은 에러 등을 야기 할 수 있기 때문에 그렇게하려고하지는 않는다. – Piet93

3

. 워드 프로세서

library(readxl) 
excel_sheets("path/to/excel/file") 

:

# To load all sheets in a workbook, use lapply 
path <- system.file("extdata/datasets.xls", package = "readxl") 
lapply(excel_sheets(path), read_excel, path = path)