2012-10-20 15 views
27

Kiedy używam lapply i drukuję do konsoli, to drukuje niechciane [[i]]NULL, chociaż chcę, aby zamierzony komunikat został wydrukowany na konsoli. Próbowałem już suppressWarnings i suppressMessages, ale te nie usuwają niechcianego sprawcy. Szukałem lapply i nie widzę argumentu, aby to uciszyć. Jest to bardziej estetyczne, ponieważ nie koliduje z funkcją. Nie jestem przeciwny drukownemu drukowaniu na konsolę, o ile użytkownik może ją wyłączyć, jeśli chce.Zatrzymaj się lapply od drukowania na konsolę

Oto funkcja przykład, wyjście i co chciałabym dostać: funkcja

Próbka:

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

FUN("hello") 

wyjściowa:

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

[[2]] 
NULL 

[[3]] 
NULL 

pożądany wynik :

hello 1 
hello 2 
hello 3 
+2

użyj 'purrr :: walk' zamiast' lapply' –

Odpowiedz

34

Zastosowanie invisible, np:

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

Można owinąć go wokół rozmowy w funkcji lapply też zrobić to porządniej.

+0

Idealny Dodam zaznaczyć jako poprawny, gdy tylko upłynie czas. Działa wspaniale (zawinąłem wezwanie do 'lapply' jak ty zasugerował), –

+0

Nadal nie jestem pewien, dlaczego to wo rks. Używałem niewidzialnego wiele razy, ale nie w tym celu. –

+2

Tymczasowo wyłącza drukowanie zwróconego obiektu. – James

6

Zastosowanie l_ply z plyr:

library(plyr) 
FUN <- function(x) { 
    FUN2 <- function(z) message(z) 
    l_ply(1:3, function(i) FUN2(paste(x, i))) 
} 
FUN("hello") 
Powiązane problemy