2015-02-20 1 views
-2

Я новичок в R и прочитал несколько форумов об ошибке в отношении неожиданной ошибки «}». Однако кажется, что большинство людей склонны забывать о скобках или смешивать их. Я не могу понять, что не так с моим кодом здесь.неожиданный '}' при запуске source()

Вот код:

typemean <- function(directory, type, id = 1:332) { 
    files_list <- list.files(directory,full.names=TRUE) ##creates a list of files 
    dat<-data.frame()         ##creates an empty data frame 
    for (i in seq_along(id)) {       ##loops through the files in id subset, rbingind them tgt 
     dat<-rbind(dat, read.csv(files_list[id[i]])) 
    } 
    mean(dat[,type],na.rm=TRUE)       ##identifies the mean of the type while removing NAs 
}  

я получить правильные ответы при запуске самого кода. Однако, сохраняя его как .R-формат, я получаю сообщение об ошибке при использовании функции source().

> save(typemean,file="typemean.R") 
> source("typemean.R") 
Error in source("typemean.R") : typemean.R:12:2: unexpected '}' 
11: mean(dat[,type],na.rm=TRUE)##identifies the mean of the type while removing NAs 
12: } 
    ^
> 
+0

Обычно вы используете 'load' на объект 'save'd. Он отлично работает –

ответ

1

save() сохраняет R представление объекта Funciton, а не исходный код, Вы хотите использовать load() для загрузки сохраненного объекта, не source(), как это:

# save the function to file 
save(typemean,file="typemean.R") 
# remove it from the current environment 
rm(typemean) 
# load the stored function from file 
load("typemean.R") 
# see that we have loaded the same function 
typemean 
+0

Спасибо за ответ! Однако для моего назначения требуется, чтобы я начал код с source() вместо load(). Как я могу подойти к этому в этом случае? Благодаря! – nics

+0

есть несколько оптронов. Самое простое - выбрать «новый скрипт» из меню файла и написать там сценарий. (для этого вы также можете использовать свой любимый текстовый редактор). Другой вариант - вызвать 'dput (typemean, file =" typemean.R ")' – Jthorpe

Смежные вопросы