2017-12-05 1 views
0

Betrachten Sie die Funktion unter:Wie zeigt man die Replikatnummer bei Verwendung von Sapply in R?

f = function(i) i^2 

Jetzt haben wir die Ausgabe von f für einen Eingangsvektor der Länge 1000 (oder äquivalent zu laufen f für 1000 Replikationen) von finden:

output = c() 
for (i in 1:1000) output[i] = f(i) 

Im Fall Wenn Sie zeitraubende Funktionen ausführen möchten, möchten wir vielleicht wissen, welche Replikation wir sind. So können wir verwenden:

output = c() 
for (i in 1:1000) {output[i] = f(i); cat("Replicate=", i, "\n")} 

Dies gibt die Replikatnummer am Ende jeder Replikation. Was nun, wenn wir verwenden sapply statt for:

output = sapply(1:1000, function(i) f(i)) 

Wie können wir sehen, die replizieren wir während sapply verwenden? Beachten Sie, dass ich versucht habe, cat("Replicate=", i, "\n") in der Definition von f hinzuzufügen. Dies zeigt die Replikationsnummer, jedoch nur am Ende des gesamten Laufs und nicht am Ende jedes Replikats.

+1

Siehe [print] (https://stat.ethz.ch/R-manual/R-devel/library/base/html/print.html) –

+1

z. 'sapply (1: 1000, Funktion (i) {print (paste0 (" Replicate = ", i)); Spaß (i)})' –

+0

@Joseph Wood: Danke. Ich habe Ihren Code ausprobiert, aber "print" funktioniert nur als "cat", d. H. Es zeigt die Replikationsnummern am Ende des gesamten Laufs, aber nicht am Ende jedes Replikats. –

Antwort

1

Sie sagen, Sie es ausprobiert haben, aber dieser Code funktioniert für mich einfach toll:

result <- sapply(1:1000, function(x) { 
    print(x) # cat works too 
    return(x^2) 
}) 

Sie die geschweiften Klammern vergessen haben! :-)

Verwandte Themen