2012-10-20 33 views
27

Khi tôi sử dụng lapply và in ra bảng điều khiển, nó in không mong muốn [[i]]NULL mặc dù tôi muốn thông báo dự định in trên bảng điều khiển. Tôi đã thử suppressWarningssuppressMessages nhưng những điều này không xóa người phạm tội không mong muốn. Tôi đã tìm kiếm lapply và không thấy một đối số để tắt tiếng. Điều này thẩm mỹ hơn vì nó không can thiệp vào chức năng. Tôi không phản đối việc in tất cả các bản in trên bảng điều khiển, miễn là người dùng có thể tắt nó nếu muốn.Dừng lapply từ in đến console

Dưới đây là một chức năng ví dụ, đầu ra và những gì tôi muốn nhận được: chức năng

mẫu:

FUN <- function(x) { 
    FUN2 <- function(z) message(z) 
    lapply(1:3, function(i) FUN2(paste(x, i))) 
} 

FUN("hello") 

Output:

hello 1 
hello 2 
hello 3 
[[1]] 
NULL 

[[2]] 
NULL 

[[3]] 
NULL 

mong muốn Output :

hello 1 
hello 2 
hello 3 
+2

sử dụng 'purrr :: walk' thay vì' lapply' –

Trả lời

34

Sử dụng invisible, ví dụ:

invisible(FUN("hello")) 
hello 1 
hello 2 
hello 3 

Bạn có thể quấn nó xung quanh lapply cuộc gọi trong hàm quá để làm cho nó ngăn nắp.

+0

Hoàn hảo. Tôi sẽ thêm đánh dấu là chính xác ngay khi thời gian hết hạn. Hoạt động tuyệt vời (Tôi đã thực hiện cuộc gọi đến 'lapply' như bạn được đề xuất), –

+0

Vẫn không chắc chắn lý do tại sao điều này rks. Tôi đã sử dụng vô hình nhiều lần nhưng không dùng cho mục đích này. –

+2

Tạm thời vô hiệu hóa việc in đối tượng được trả về. – James

6

Sử dụng l_ply từ plyr:

library(plyr) 
FUN <- function(x) { 
    FUN2 <- function(z) message(z) 
    l_ply(1:3, function(i) FUN2(paste(x, i))) 
} 
FUN("hello") 
Các vấn đề liên quan