Ich versuche, die Punkte (...) innerhalb einer benutzerdefinierten Funktion zu ändern. Hier ist ein vereinfachtes Beispiel für meine plot2
-Funktion, die eine grafische Darstellung zeigt den Bildschirm mit type="p"
(Standardeinstellung) und speichert eine svg mit type="l"
. Das Problem tritt auf, wenn eine der ...
Plot-Optionen bereits in der Funktion ist. In diesem Beispiel wird "type"
mit mehreren tatsächlichen Argumenten verglichen.Ändern Punkte (...) in einer Funktion
plot2 <-function(...){
plot(...) #visible on screen
svg("c:/temp/out.svg") #saved to file
plot(...,type="l")
dev.off()
}
#This works
plot2(1:10)
#This does not work because type is redefined
plot2(1:10, type="o")
Ich habe versucht, die Punkte in einem list
innerhalb der Funktion zu setzen und ändern, aber plot
keine Liste als Eingabe akzeptieren.
#Does not work
plot2 <-function(...){
plot(...)
dots <<-list(...)
print(dots)
if("type" %in% names(dots)) dots$type="l"
print(dots)
svg("c:/temp/out.svg")
plot(dots)
dev.off()
}
plot2(1:10, type="o")
Error in xy.coords(x, y, xlabel, ylabel, log) :
'x' is a list, but does not have components 'x' and 'y'
Vielen Dank. Einfach und effektiv. –