質問

When I run my code via R-Studio I'm told I have an unexpected curly brace.

I have four: two to open/close the function and two for the for loop. I'm then told many of the variables are not found: Unexpected "for", "directory" not found, "basedf" not found. It's as if nothing from my function is recognized.

I tried cutting and pasting the function directly into the console but with similar errors.

Is my function flawed, or is something else the issue?

pollutantmean <- function(directory, pollutant, id = 1:332) {
    files <- list.files(directory)
    subsetFiles <- files[id]
    basedf <- data.frame(Date = as.Date(character(),
            sulfate = numeric(),
            nitrate = numeric(),
            ID = numeric())
    for (i in subsetFiles) {
        filepaths <- paste(directory,"/",i, sep='')
        basedf <- rbind(basedf, read.csv(filepaths))
    }
    good <- complete.cases(basedf)
    data2 <- basedf[good,pollutant]
    mean(data2)
}
役に立ちましたか?

解決

You are simply missing a bracket in basedf:

basedf <- data.frame(Date = as.Date(character(),
                     sulfate = numeric(),
                     nitrate = numeric(),
                     ID = numeric()))

Then everything should work fine.

Alternatively, you could have the bracket at the end of as.Date as stated by flamenco, but your function will still compile either way. It depends on what the purpose of your function is.

他のヒント

Actually, it should be as:

          basedf <- data.frame(Date = as.Date(character()),
                                              sulfate = numeric(),
                                              nitrate = numeric(),
                                              ID = numeric()) 

There is missing parenthesis but is the closing one from as.Date().

It seems that you are working on the assignment from Coursera. You might want to add the format for as.Date().

 R:> basedf <- data.frame(Date = as.Date(character(), format='%Y/%m/%d'),
                       sulfate = numeric(),
                       nitrate = numeric(),
                       ID = numeric())

 R:> basedf
 [1] Date    sulfate nitrate ID     
 <0 rows> (or 0-length row.names)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top