2017-11-13 3 views
-3

Mein Code ist wie folgt,Fehler: unerwartete ‚}‘ in „}“

`FARS = read.csv("C:\\Users\\rb138\\Desktop\\FARS.csv", header = T, sep = ",", na.strings=c(""," ","NA-code","NA")) 


Preprocessing = process() { 

    FARS$X = NULL 
    library(caTools) 
    is.na(FARS) <- FARS == "NULL" 
    miss<-function(x) 
    { 
    return(sum(is.na(x)/length(x)*100)) 
    } 
    apply(FARS,2,FUN = miss) 
    Mode <- function (x, na.rm) { 
    xtab <- table(x) 
    xmode <- names(which(xtab == max(xtab))) 
    if (length(xmode) > 1) xmode <- ">1 mode" 
    return(xmode) 
    } 
    for (var in 1:ncol(FARS)) { 
    if (class(FARS[,var])=="numeric") { 
     FARS[is.na(FARS[,var]),var] <- mean(FARS[,var], na.rm = TRUE) 
    } else if (class(FARS[,var]) %in% c("character", "factor")) { 
     FARS[is.na(FARS[,var]),var] <- Mode(FARS[,var], na.rm = TRUE) 
    } 
    } 
    set.seed(45) 
    split = sample.split(FARS$airbagDeploy, SplitRatio = 0.70) 
    Train1 = subset(FARS, split == TRUE) 
    Test1 = subset(FARS, split == FALSE) 

    }` 

Wenn es außerhalb des Objekts ist passiert sie keinen Fehler werfen. Aber wenn ich es innerhalb der Funktion leite seine wirft die folgende Ausnahme:

Error: unexpected '}' in " }"

Auch wenn ich versuche, das Objekt in einer RDS-Datei zu speichern, Code wie folgt:

saveRDS(Preprocessing, file = "preprocessing_script.rds")

seine wirft die folgende Ausnahme:

Error in saveRDS(Preprocessing, file = "preprocessing_script.rds") : object 'Preprocessing' not found

Der dafür verwendete Datensatz ist FARS.csv aus dem Paket "gamclass" in R. Falls jemand den Datensatz benötigt, bitte wie in Ihren Kommentaren.

Vielen Dank im Voraus.

+0

was versuchst du hier? 'Preprocessing = process() {' um eine neue Funktion zu erstellen? Wenn ja, dann ist die Syntax falsch – amrrs

+0

Ich versuche, das gesamte Skript vor der Verarbeitung in einem einzigen Objekt zu setzen. – Deb

+0

Haben Sie es nicht in einer separaten Datei und 'source()' diese Datei? Auch in dieser Datei könnten Sie Ihre Funktion 'Preprocessing <- function() {your code}' definieren und später aufrufen. – vaettchen

Antwort

1

Versuchen Sie Ihren Code wie folgt mit separater Funktion ändern:

FARS = read.csv("C:\\Users\\rb138\\Desktop\\FARS.csv", header = T, sep = ",", na.strings=c(""," ","NA-code","NA")) 


Preprocessing = function(FARS) { 

    FARS$X = NULL 
    library(caTools) 
    is.na(FARS) <- FARS == "NULL" 
    miss<-function(x) 
    { 
    return(sum(is.na(x)/length(x)*100)) 
    } 
    apply(FARS,2,FUN = miss) 
    Mode <- function (x, na.rm) { 
    xtab <- table(x) 
    xmode <- names(which(xtab == max(xtab))) 
    if (length(xmode) > 1) xmode <- ">1 mode" 
    return(xmode) 
    } 
    for (var in 1:ncol(FARS)) { 
    if (class(FARS[,var])=="numeric") { 
     FARS[is.na(FARS[,var]),var] <- mean(FARS[,var], na.rm = TRUE) 
    } else if (class(FARS[,var]) %in% c("character", "factor")) { 
     FARS[is.na(FARS[,var]),var] <- Mode(FARS[,var], na.rm = TRUE) 
    } 
    } 
    set.seed(45) 
    split = sample.split(FARS$airbagDeploy, SplitRatio = 0.70) 
    Train1 = subset(FARS, split == TRUE) 
    Test1 = subset(FARS, split == FALSE) 

    } 

Preprocessing(FARS) 

Lassen Sie mich wissen, ob es funktioniert!

+0

Hi @amrrs, es funktioniert! Danke für das Debuggen. – Deb