2012-10-20 13 views
27

lapply'u kullandığımda ve konsola yazdırıldığında, istenen iletinin konsola yazdırılmasını istediğim halde istemeden [[i]]NULL yazdırıyor. suppressWarnings ve suppressMessages'u denedim ancak bunlar istenmeyen saldırganı kaldırmıyor. lapply'u aradım ve onu susturmak için bir argüman görmüyorum. Bu, işleve müdahale etmediğinden daha estetiktir. Kullanıcı istediği takdirde kapatabildiği sürece, konsola allternatif baskıya karşı değilim. İşte Baskıdan konsere durma

bir örnek fonksiyonu, çıktı ve ben almak istiyorum neyi:

Numune fonksiyonu:

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

FUN("hello") 

Çıktı:

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

[[2]] 
NULL 

[[3]] 
NULL 

İstenilen Çıktı :

hello 1 
hello 2 
hello 3 
+2

'lapply' yerine' purrr :: walk' kullanın ' –

cevap

34

Kullanım invisible, örneğin:

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

Fonksiyondaki lapply çağrı etrafında sarın da o tidier yapmak. plyr gelen

+0

Mükemmel.sonraki süre dolduğunda doğru olarak işaretleyeceğim.İyi çalışıyorum (' lapply' için çağrıyı sizlere sardım önerilen), –

+0

Hala neden bu wo emin değilim rks. Birçok kez görünmez kullandım ama bu amaç için değil. –

+2

İade edilen nesnenin yazdırılmasını geçici olarak devre dışı bırakır. – James

6

Kullanım l_ply:

library(plyr) 
FUN <- function(x) { 
    FUN2 <- function(z) message(z) 
    l_ply(1:3, function(i) FUN2(paste(x, i))) 
} 
FUN("hello") 
İlgili konular