2013-12-13 27 views
14

Cách ưa thích để kiểm tra xem khung dữ liệu có tồn tại cho bạn có tên khung dữ liệu dưới dạng chuỗi không? Tôi có thể nghĩ đến:Kiểm tra xem khung dữ liệu có tồn tại không

df_name <- 'iris' 

# Option 1 
tryCatch(is.data.frame(get(df_name)), error=function(cond) FALSE) 

# Option 2 
if (exists(df_name)) is.data.frame(get(df_name)) else FALSE 
+2

Tôi sẽ bỏ phiếu cho chương trình thứ hai. nhưng nếu bạn muốn bọc nó trong một hàm thì cả 'iris' hoặc 'df_name' cần được thay đổi để cùng tên đang được sử dụng. –

Trả lời

20

Lựa chọn thứ hai có thể được rút ngắn xuống còn

exists(df_name) && is.data.frame(get(df_name)) 

Nhà điều hành && cho phép đánh giá lười biếng, nghĩa là, báo cáo kết quả thứ hai là chỉ đánh giá nếu người đầu tiên trả về TRUE.

0

Một số khác

ifelse(any(ls() %in% "a"), is.data.frame(get("a")),FALSE) 
+1

Điều này có vẻ vừa là cách sử dụng không phù hợp của 'ifelse()' và không mở rộng "tìm kiếm" sang các bộ dữ liệu hệ thống có sẵn có thể không có trong môi trường toàn cầu. –

0

tồn tại ("df_name") sẽ cung cấp TRUE (nếu khung dữ liệu tồn tại) và FALSE (nếu không). Vậy tại sao lại bận tâm? Câu lệnh trycatch trong phản ứng đầu tiên không hoạt động. Đầu ra của nó là FALSE mọi lúc.

+0

Có lẽ câu trả lời của bạn chỉ kiểm tra xem một đối tượng tồn tại chứ không phải là liệu đối tượng đó có tồn tại như một khung dữ liệu không? –

+1

Ngoài ra, câu lệnh 'tryCatch' trả về' TRUE' cho tôi. –

Các vấn đề liên quan