2014-10-04 7 views
0

Я все еще новичок в мире R, в очень ускоренном классе с ограниченным/отсутствующим руководством. Мое задание состоит в том, чтобы создать пользовательскую функцию, которая читает в определенном CSV, и вывести некоторые конкретные столбцы для анализа. Может ли кто-нибудь предложить совет? «Образец кода» я получил выглядит следующим образом:Создание команды read() в пользовательской функции

AnnualLekSurvey=function(data.in,stat.year){ 
d1=subset(data.in,year==stat.year) 
d2=d1[c("year","complex","tot_male")] 
     attach(d2)} 

Так что, когда он будет завершен, и я бегу, я должен быть в состоянии сказать:

AnnualLekSurvey(gsg_lek,2006) 

где «gsg_lek» это имя файл, который я хочу импортировать, а в 2006 году - значения из столбца «год», который я хочу подмножить. «complex» и «tot_male» будут переменной, подлежащей анализу на «год», но я не беспокоюсь об этом коде прямо сейчас.

То, что я смущен, есть; как мне сказать R, что gsg_lek является .csv-файлом и говорит ему, чтобы он смотрел в соответствующий каталог для него, когда я запускаю пользовательскую функцию?

Я видел еще один похожий пример здесь, и они должны были использовать команды if() и paste() для создания строки имени файла - это кажется слишком большой произвольной работой, если только я не просто будучи ленивым ...

Любая помощь будет оценена по достоинству.

+0

если 'data.in' - это полный путь к вашему файлу csv, включая расширение, первая строка вашей функции должна быть 'd1 <- read.csv (data.in)' или аналогичный. Не используйте приставку; вместо этого просто 'return (d2)'. Что значит «слишком много произвольной работы»? – rawr

ответ

0

Вы можете сделать функцию следующим образом:

AnnualLekSurvey <- function(csvFile, stat.year) 
{ 
    d1 <- read.csv(paste("C:/",csvFile,".csv", sep=""),header=T, sep=",") 
    d2 <- subset(d1, year==stat.year) 
    d2 <- d2[, c("year","complex","tot_male")] 
    return(d2) 
} 

Аргумент «csvFile» в функции является базовое имя файла CSV. В этом конкретном примере это должно быть в вашей папке C: /. Если ваш файл находится в какой-либо другой папке, вы должны изменить «C: /» в функции в папку, в которой находится ваш файл csv.

Запуск функции:

data <- AnnualLekSurvey("gsg_lek", "2006") 

Обратите внимание, что аргументы должны быть в кавычках. «data» теперь будет содержать столбцы year, complex и tot_male gsg_lek.csv, соответствующие 2006 году

+0

Что делать, если они на машине Linux? Возможно, вы захотите использовать 'file.path' или' path.expand' вместо жесткого кодирования пути к файлу. –

+0

@technOslerphile код выглядит так, как будто он должен запускаться, и я ввел его точно так же, как у вас есть, за исключением установки C:/где файл (такой же, как и мой рабочий каталог). Но когда я запускаю: данные <- AnnualLekSurvey (gsg_lek, "2006") Я получаю эту ошибку: Ошибка вставки («C:/... exercise_dat»,: object 'gsg_lek' не найден - так как это что OBJECT gsg_lek не найден, это означает, что он пытается сделать gsg_lek объектом до того, как он был прочитан в R? Любая идея, что пойдет не так? – Charlie

+0

Извините за предыдущий комментарий выше. Я попробовал «ctrl + k», и «5 пробелов», чтобы отделить код от текста, но ни один из них не работал ... – Charlie

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