2017-10-26 1 views
0

einfach grafischen Darstellung versuchen, eine Funktion zu erzeugen unter der Kurve für az-Score oder einen Satz von z-Scores Plotbereich, aber wenn ich gebe zwei Z-Werte mit zshade(c(1,2)) ich die folgenden Fehlermeldung erhalten:Fehler mit Sequenzen zu erzeugen, wenn Grundstücke in R

Error in seq.default(z1, z2, 0.01) : 'to' must be of length 1 

Aber ich bin nicht sicher, warum dies der Fall ist, ich doppelt z2 geprüft und es ist in der Tat mit einer Länge von 1, so bin ich nicht sicher, wo der Fehler ist.

zshade = function(z, shade = "left") { 
    # If more than 2 z scores are given 
    if (length(z) > 2) { 
    stop("Error: Too many z scores given!") 
    } 

    # If two z scores are given 
    if (length(z) > 1) { 
    z1 = min(z) 
    z2 = max(z) 
    cord.x = c(z1, seq(z1, z2, 0.01), z2) 
    cord.y = c(0, dnorm(seq(z1, z2, 0.01)), 0) 
    curve(dnorm(x, 0, 1), xlim = c(-4, 4), main = "Standard Normal", 
     ylab = "", xlab = "") 
    polygon(cord.x, cord.y, col = "skyblue") 
    } 

    # If a single z score is given 
    if (shade == "left") { 
    z1 = -4 
    z2 = z 
    cord.x = c(z1, seq(z1, z2, 0.01), z2) 
    cord.y = c(0, dnorm(seq(z1, z2, 0.01)), 0) 
    curve(dnorm(x, 0, 1), xlim = c(-4, 4), main = "Standard Normal Curve", 
     ylab = "", xlab = "") 
    polygon(cord.x, cord.y, col = "skyblue") 
    } 
    if (shade == "right") { 
    z1 = z 
    z2 = 4 
    cord.x = c(z1, seq(z1, z2, 0.01), z2) 
    cord.y = c(0, dnorm(seq(z1, z2, 0.01)), 0) 
    curve(dnorm(x, 0, 1), xlim = c(-4, 4), main = "Standard Normal Curve", 
     ylab = "", xlab = "") 
    polygon(cord.x, cord.y, col = "skyblue") 
    } 
} 

zshade (c (1,2))

+0

Wo ist der Code, den Funktionsaufruf 'zshade (z1, z2 machen, 0.01) '? Kannst du klar sehen, was das Problem ist? –

+0

Schauen Sie sich Zeile 21 an: 'z2 = z'. Da gehts, von da an ist 'z2' von Länge 2. –

+0

Ahh, schau mal was ich hier falsch gemacht habe. Einfach einen dummen Fehler machen, die Waffe zu springen und eine einfache Linie zu vergessen –

Antwort

0

Dumme Fehler, siehe unten Code ...

zshade = function(z, shade = "left") { 
# If more than 2 z scores are given 
if (length(z) > 2) { 
    stop("Error: Too many z scores given!") 
} 

# If two z scores are given 
if (length(z) > 1) { 
    z1 = min(z) 
    z2 = max(z) 
    cord.x = c(z1, seq(z1, z2, 0.01), z2) 
    cord.y = c(0, dnorm(seq(z1, z2, 0.01)), 0) 
    curve(dnorm(x, 0, 1), xlim = c(-4, 4), main = "Standard Normal", 
     ylab = "", xlab = "") 
    polygon(cord.x, cord.y, col = "skyblue") 
} 

if (length(z)==1) { 
    # If a single z score is given 
    if (shade == "left") { 
    z1 = -4 
    z2 = z 
    cord.x = c(z1, seq(z1, z2, 0.01), z2) 
    cord.y = c(0, dnorm(seq(z1, z2, 0.01)), 0) 
    curve(dnorm(x, 0, 1), xlim = c(-4, 4), main = "Standard Normal Curve", 
      ylab = "", xlab = "") 
    polygon(cord.x, cord.y, col = "skyblue") 
    } 
    if (shade == "right") { 
    z1 = z 
    z2 = 4 
    cord.x = c(z1, seq(z1, z2, 0.01), z2) 
    cord.y = c(0, dnorm(seq(z1, z2, 0.01)), 0) 
    curve(dnorm(x, 0, 1), xlim = c(-4, 4), main = "Standard Normal Curve", 
      ylab = "", xlab = "") 
    polygon(cord.x, cord.y, col = "skyblue") 
    } 
} 
} 
Verwandte Themen