Die Mathe-Redaktion - 22.08.2017 22:20 - Registrieren/Login
Auswahl
Aktion im Forum
Suche
Stichwortsuche in Artikeln und Links von Matheplanet
Suchen im Forum
Suchtipps

Bücher
Englische Bücher
Software
Suchbegriffe:
Mathematik bei amazon
Naturwissenschaft & Technik
In Partnerschaft mit Amazon.de
Kontakt
Mail an Matroid
[Keine Übungsaufgaben!]
Impressum

Bitte beachten Sie unsere Nutzungsbedingungen, die Distanzierung, unsere Datenschutzerklärung und
die Forumregeln.

Sie können Mitglied werden oder den Newsletter bestellen.

Der Newsletter Apr. 2017

Für Mitglieder
Mathematisch für Anfänger
Wer ist Online
Aktuell sind 643 Gäste und 23 Mitglieder online.

Sie können Mitglied werden:
Klick hier.

Über Matheplanet
 
Zum letzten Themenfilter: Themenfilter:
Matroids Matheplanet Forum Index
Moderiert von matroid mire2
Mathematische Software & Apps » Statistikpakete » R: do.call, persp
Druckversion
Druckversion
Antworten
Antworten
Autor
Universität/Hochschule R: do.call, persp
nicemath
Neu Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 12.12.2016
Mitteilungen: 2
Aus:
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Themenstart: 2017-04-21 15:36


Ich soll eine Funktion mypersp schreiben, die Funktion persp verändert:
- Sollten keine Werte für <math>xlab, ylab, zlab</math> angegeben sein, sollen diese auf <math>'x','y','z'</math> gesetzt werden.
- Startwerte für theta und phi ist 0 bzw. 15. Wenn andere Werte eingeben werden, merkt sich die Funktion diese und benutzt sie so lange, bis neue Werte eingegeben wurden.

Mein Versuch sieht so aus:
mypersp <- function(x,...){
  arg<-list(...)
  if (hasArg(theta)){
    arg$theta<-theta
  do.call(persp,arg)
  else
    arg$theta<-0
  do.call(persp,arg)}
  if (hasArg(phi)){
    arg$phi<-phi
  do.call(persp,arg)
  else
    arg$phi<-15
  do.call(persp,arg)
  }
  if(!hasArg(xlab)){
    arg$xlab<-"x"
    }
  if(!hasArg(ylab)){
    arg$ylab<-"y"
  }
  if(!hasArg(zlab)){
    arg$zlab<-"z"
  }
  do.call(persp,arg)}

Ich soll dann die Funktion mit folgenden Werten testen:
x <- seq(0, 10, 0.1)
y <- seq(0, 5, 0.1)
z <- outer(cos(x) / (1 + x^2 / 10), cos(y) / (1 + y^2/10), "*")
mypersp(x, y, z)                      ## Winkel theta=0, phi=15
mypersp(x, y, z, theta=30, phi=30)    ## ab jetzt theta=30, phi=30
mypersp(x, y, z, col="red")           ## immer noch theta=30, phi=30
mypersp(x, y, z, theta=60, phi=20)    ## ab jetzt theta=60, phi=20

Jedoch kommt immer folgende Fehlermeldung:
 Error in persp.default(c(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9,  :
  increasing 'x' and 'y' values expected

x und y sind doch so gewählt, dass sie steigend sind? Wenn ich persp(x,y,z) aufrufe, erhalte ich keine Fehlermeldung. Es muss an dem do.call liegen.

Was soll die Fehlermeldung? Wie schaffe ich es, dass sich die Funktion theta und phi merkt? In der Aufgabenstellung steht noch, dass man zwei for-Schleifen und mind. drei if-Anweisungen braucht. Wozu benötige ich die for-Schleifen?

Es wäre echt nett, wenn mir jemand helfen könnte. ich bin echt am Verzweifeln.  frown



  Profil  Quote  Link auf diesen Beitrag Link
nicemath wird per Mail über neue Antworten informiert.
Neues Thema [Neues Thema] Antworten [Antworten]    Druckversion [Druckversion]

 


Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2017 by Matroids Matheplanet
This web site was made with PHP-Nuke, a web portal system written in PHP. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]